`
lxf_2011
  • 浏览: 61797 次
  • 性别: 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() { 
             
        } 
    } 


分享到:
评论

相关推荐

    Java注释全解文档

    SSH框架中的Struts使用Action和Result注解来定义控制器和结果跳转,而Spring MVC框架提供了类似的@Controller和@RequestMapping注解。Hibernate整合到这些框架中,使得ORM更加便捷,通过注解可以直接在实体类上配置...

    注解 写的万能增删改查

    在IT行业中,注解(Annotation)是编程领域中一种强大的元数据工具,它允许程序员向代码添加信息,这些信息可以被编译器、解释器或工具在编译时或运行时处理。万能增删改查(CRUD,Create, Read, Update, Delete)是...

    注释最全,一步步详解 shiro-ssm登录认证权限授予验证案例.zip

    - 配置 Shiro Filter,将 Shiro 的过滤器链加入到 Spring MVC 的 DispatcherServlet 中。 3. **登录认证**: - 创建一个自定义的 Realm(领域),继承自 `AuthorizingRealm` 类,实现认证和授权逻辑。 - 在 ...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    Java学习笔记-个人整理的

    {2.2.2}方法重写/覆盖}{50}{subsection.2.2.2} {2.3}修饰符}{51}{section.2.3} {2.4}父类对象的方法调用}{51}{section.2.4} {2.5}封装}{52}{section.2.5} {2.6}多态}{53}{section.2.6} {2.7}Sample code}{54}...

    javaSE代码实例

    2.1 源代码注释 12 2.1.1 单行注释 12 2.1.2 区域注释 12 2.1.3 文档注释 13 2.2 基本数据类型 14 2.2.1 整型 15 2.2.2 浮点型 17 2.2.3 char型 17 2.2.4 boolean型 18 2.3 基本数据类型值间的...

Global site tag (gtag.js) - Google Analytics