`
lxf_2011
  • 浏览: 60700 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring MVC 中注解,注释,请求处理和url重写

    博客分类:
  • Java
阅读更多
1.@RequestMapping  用法

SpringMVC中,@RequestMapping用来处理请求,比如XXX.do

@RequestMapping("/aaa")//类级别,可以不需要,如果要了,下面所有的请求路径前都需要加入  /aaa
public class ccccontroller{

      @RequestMapping("/bbb")//方法级别,必须有,决定这个方法处理哪个请求,如果有类级别 /aaa/bbb

      public String xxx()
      {
            //如果没有类级别的就直接请求/bbb
            return;
      }
}


2:接收带参数的请求,接收用户请求参数 值

请求1: /test/start.do?name=zhangsan
请求2: /test/start/zhangsan.do

在请求2中 将参数作为请求URL传递,感觉用的不习惯

采用 URL模板

@RequestMapping("/start/{name}")//这个name  随便  啥都可以

Java代码  收藏代码

     public String start(@PathVariable("name") string name){       //和上面的对应 
         return ;//方法体里面就可以直接获得参数 
    } 



包含多个  @RequestMapping ("/start/{name}/{age}")

3不同请求方法,用不同处理方法   get  post

   @RequestMapping (value="/start" ,method=RequestMethod.GET)//处理post 就换成 POST

另外,如果Servlet想要做到/test/start/zhangsan.do这种请求的话

需要 URL 重写才能做到,或者用 /start/* 作为 Servlet 请求控制器,在其中进行截取和判断。
第二种方法:自己写一个 URL 重写的 Filter
第三种方法:使用现成的 urlrewriter 工具
第四种方法:使用 Web 服务器的 URL 重写功能

Servlet中用Filter重写示例
web.xml中:


    <?xml version="1.0" encoding="UTF-8"?> 
    <web-app version="2.4"  
        xmlns=" http://java.sun.com/xml/ns/j2ee"  
        xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee  
         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
      <servlet> 
        <servlet-name>Action</servlet-name> 
        <servlet-class>com.bao.servlet.Action</servlet-class> 
      </servlet> 
      <servlet-mapping> 
        <servlet-name>Action</servlet-name> 
        <url-pattern>/Action</url-pattern> 
      </servlet-mapping> 
       
      <filter> 
        <filter-name>action_name</filter-name> 
        <filter-class>com.bao.filter.ActionNameFilter</filter-class> 
        <init-param> 
          <param-name>pattern</param-name> 
          <param-value>/action/[^/]+</param-value> 
        </init-param> 
      </filter> 
      <filter-mapping> 
        <filter-name>action_name</filter-name> 
        <url-pattern>/action/*</url-pattern> 
      </filter-mapping> 
    </web-app> 




    private Matcher matcher; 
     
    Matcher 不是线程安全的,所以这样写是错误的。改正一下: 
     
    package com.bao.filter; 
     
    import java.io.IOException; 
    import java.util.regex.Matcher; 
    import java.util.regex.Pattern; 
     
    import javax.servlet.Filter; 
    import javax.servlet.FilterChain; 
    import javax.servlet.FilterConfig; 
    import javax.servlet.ServletException; 
    import javax.servlet.ServletRequest; 
    import javax.servlet.ServletResponse; 
    import javax.servlet.http.HttpServletRequest; 
     
    public class ActionNameFilter implements Filter { 
     
        private Pattern pattern; 
     
        public void init(FilterConfig config) throws ServletException { 
            String p = config.getInitParameter("pattern"); 
            pattern= Pattern.compile(p); 
        } 
     
        public void doFilter(ServletRequest req, ServletResponse res, 
                FilterChain chain) throws IOException, ServletException { 
            HttpServletRequest request = (HttpServletRequest)req; 
            String context = request.getContextPath(); 
            String uri = request.getRequestURI(); 
            // 去掉 URI 中的 context path 
            String path = uri.substring(context.length()); 
            if(pattern.matcher(path).matches()) { 
                // 如果 URI path 符合配置中的模式,则重新转发 
                int idx = uri.lastIndexOf("/"); 
                String name = uri.substring(idx + 1); 
                request.getRequestDispatcher("/Action?username=" + name).forward(req, res); 
            } else { 
                // 不符合的话做该做的事情 
                chain.doFilter(req, res); 
            } 
        } 
     
        public void destroy() { 
             
        } 
    } 


分享到:
评论

相关推荐

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

    Spring MVC 的注解使用实例

    在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。...在Springmvc02这个项目中,你可以找到更多关于这些注解的实际应用示例,通过学习和实践,将有助于深入理解Spring MVC的注解驱动开发模式。

    最全的Spring MVC注解例子,异步请求,错误处理

    在这个“最全的Spring MVC注解例子”中,我们将深入探讨Spring MVC的核心注解,以及如何实现异步请求处理和错误管理。 1. **Spring MVC核心注解** - `@Controller`:标记一个类为处理HTTP请求的控制器。这是Spring...

    Spring3.0MVC注解(附实例)

    为了使Spring MVC能够识别并处理这些注解,你需要在`DispatcherServlet`的配置中包含`DefaultAnnotationHandlerMapping`和`AnnotationMethodHandlerAdapter`。这两个组件是Spring MVC框架的核心部分,它们负责映射...

    spring-mvc注解详情

    注解在Spring MVC中扮演着核心角色,它们提供了声明式编程,使得开发者能够以更简洁的方式配置和控制应用程序的行为。 1. **@Controller**:这个注解标记一个类作为Spring MVC的控制器。控制器类处理来自客户端的...

    spring mvc mybatis 注解版

    在Spring MVC中,注解简化了配置文件,使得开发者可以直接在控制器类和方法上使用注解来声明路由、参数绑定和异常处理等。主要的注解有: 1. `@Controller`:标记一个类为控制器类,处理来自HTTP请求的方法。 2. `@...

    Spring MVC非注解测试

    非注解测试在Spring MVC中是指不依赖于Java注解如`@Test`,`@Controller`等进行的测试,而是通过XML配置文件来定义组件和它们之间的关系。这种方式虽然比注解方式繁琐,但有助于理解Spring MVC的工作原理。 首先,...

    Spring MVC 使用注解的示例讲解

    这里,@PathVariable注解使得URL中的"id"值可以直接赋给方法参数。 4. **模型数据与视图** 使用@ModelAttribute注解可以将方法的返回值自动添加到Model中,便于传递到视图。视图解析通常通过ViewResolver完成,...

    Spring MVC注解项目实例

    在Spring MVC中,常见的注解有`@Controller`、`@RequestMapping`、`@GetMapping`、`@PostMapping`等,它们分别用于定义控制器类和处理HTTP请求的方法。例如,`@Controller`标识一个类作为Spring MVC的控制器,而`@...

    spring mvc + spring + hibernate 全注解整合开发视频教程 12

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...

    spring mvc 注解实例

    拦截器是Spring MVC中的另一个重要概念,它允许我们在请求处理前后执行自定义逻辑。 首先,让我们关注Spring MVC的核心注解: 1. `@Controller`:这个注解用于标记一个类作为Spring MVC的控制器。控制器负责接收...

    spring mvc 注解例子

    Spring MVC 是一个强大的Java Web开发框架,用于...在提供的链接文章"spring mvc 注解实现"中,你应该能发现更多关于如何实际应用这些注解的例子和详细解释。学习和理解这些注解对于提升Spring MVC的开发效率至关重要。

    使用Spring 2.5 基于注解驱动的 Spring MVC详解

    使用 Spring 2.5 基于注解驱动的 Spring MVC 详解 ...Spring 2.5 中的注解驱动功能使得 Spring MVC 框架变得更加灵活和易用。使用注解驱动功能,可以完全替换传统的基于 XML 的配置方式,使得配置变得更加简单和灵活。

    基于注解Spring MVC环境搭建

    在“基于注解的Spring MVC环境搭建”中,我们将深入探讨如何利用注解来简化配置,快速建立一个运行中的Web项目。这篇博文(尽管描述为空,但提供了链接)很可能是关于创建一个基本的Spring MVC项目并使用注解来管理...

    spring mvc 注解 增删改 实例

    Spring MVC 是一个强大的Java web开发框架,用于构建高效、可维护和模块化的Web应用程序。...通过这个实例,开发者可以深入理解Spring MVC的请求处理机制和Hibernate的ORM功能,为实际项目开发打下坚实基础。

    Spring MVC请求参数与响应结果全局加密和解密详解

    在Spring MVC中,我们可以使用@RequestBody注解来处理请求参数,并使用 EncryptUtils 工具类来进行加密和解密。EncryptUtils 工具类提供了sha()方法来生成签名,createAesCipher()方法来创建AES加密器。 在控制器...

    Spring MVC实例 MVC注解配置

    在Spring MVC中,你可以创建一个类,并使用`@Controller`注解,然后在类的方法上使用`@RequestMapping`或其变体(如`@GetMapping`, `@PostMapping`等)来指定处理特定HTTP请求的方法。 3. **模型(Model)**: - ...

    Spring mvc 超简完整注解可运行Demo

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,专为构建 MVC...通过研究和运行这个项目,你可以更好地理解 Spring MVC 如何处理 Web 请求,以及如何通过注解实现 MVC 架构的各个部分。

    学习Spring MVC,关于注解的Spring MVC,简单例子,关于控制器的Spring MVC,学习Spring,简单Spring MVC实例

    另外,Spring MVC还提供了许多其他注解,如`@RequestParam`用于从请求参数中获取值,`@ModelAttribute`用于绑定表单数据到模型对象,`@ResponseBody`用于直接将方法返回值转换为HTTP响应体等。 学习Spring时,了解...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...

Global site tag (gtag.js) - Google Analytics