• .@RequestMapping 使用方法


    1.@RequestMapping  使用方法 

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

    Java代码  收藏代码
    1. @RequestMapping("/aaa")//类级别,能够不须要,假设要了,以下全部的请求路径前都须要增加  /aaa  
    2.  public class ccccontroller{  
    3.   
    4.       @RequestMapping("/bbb")//方法级别,必须有,决定这种方法处理哪个请求,假设有类级别 /aaa/bbb  
    5.   
    6.       public String xxx()  
    7.       {  
    8.             //假设没有类级别的就直接请求/bbb  
    9.             return;  
    10.       }  
    11. }  


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

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

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

    採用 URL模板 

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

    Java代码  收藏代码
    1.  public String start(@PathVariable("name") string name){       //和上面的相应  
    2.      return ;//方法体里面就能够直接获得參数  
    3. }  


    包括多个  @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 server的 URL 重写功能 

    Servlet中用Filter重写演示样例 
    web.xml中: 
    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <web-app version="2.4"   
    3.     xmlns=" http://java.sun.com/xml/ns/j2ee"   
    4.     xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"   
    5.     xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee   
    6.      http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
    7.   <servlet>  
    8.     <servlet-name>Action</servlet-name>  
    9.     <servlet-class>com.bao.servlet.Action</servlet-class>  
    10.   </servlet>  
    11.   <servlet-mapping>  
    12.     <servlet-name>Action</servlet-name>  
    13.     <url-pattern>/Action</url-pattern>  
    14.   </servlet-mapping>  
    15.     
    16.   <filter>  
    17.     <filter-name>action_name</filter-name>  
    18.     <filter-class>com.bao.filter.ActionNameFilter</filter-class>  
    19.     <init-param>  
    20.       <param-name>pattern</param-name>  
    21.       <param-value>/action/[^/]+</param-value>  
    22.     </init-param>  
    23.   </filter>  
    24.   <filter-mapping>  
    25.     <filter-name>action_name</filter-name>  
    26.     <url-pattern>/action/*</url-pattern>  
    27.   </filter-mapping>  
    28. </web-app>  


    Filter中: 
    Java代码  收藏代码
    1. private Matcher matcher;  
    2.   
    3. Matcher 不是线程安全的,所以这样写是错误的。改正一下:  
    4.   
    5. package com.bao.filter;  
    6.   
    7. import java.io.IOException;  
    8. import java.util.regex.Matcher;  
    9. import java.util.regex.Pattern;  
    10.   
    11. import javax.servlet.Filter;  
    12. import javax.servlet.FilterChain;  
    13. import javax.servlet.FilterConfig;  
    14. import javax.servlet.ServletException;  
    15. import javax.servlet.ServletRequest;  
    16. import javax.servlet.ServletResponse;  
    17. import javax.servlet.http.HttpServletRequest;  
    18.   
    19. public class ActionNameFilter implements Filter {  
    20.   
    21.     private Pattern pattern;  
    22.   
    23.     public void init(FilterConfig config) throws ServletException {  
    24.         String p = config.getInitParameter("pattern");  
    25.         pattern= Pattern.compile(p);  
    26.     }  
    27.   
    28.     public void doFilter(ServletRequest req, ServletResponse res,  
    29.             FilterChain chain) throws IOException, ServletException {  
    30.         HttpServletRequest request = (HttpServletRequest)req;  
    31.         String context = request.getContextPath();  
    32.         String uri = request.getRequestURI();  
    33.         // 去掉 URI 中的 context path  
    34.         String path = uri.substring(context.length());  
    35.         if(pattern.matcher(path).matches()) {  
    36.             // 假设 URI path 符合配置中的模式,则又一次转发  
    37.             int idx = uri.lastIndexOf("/");  
    38.             String name = uri.substring(idx + 1);  
    39.             request.getRequestDispatcher("/Action?username=" + name).forward(req, res);  
    40.         } else {  
    41.             // 不符合的话做该做的事情  
    42.             chain.doFilter(req, res);  
    43.         }  
    44.     }  
    45.   
    46.     public void destroy() {  
    47.           
    48.     }  
    49. }  
  • 相关阅读:
    MyEclipse里运行时报错
    Django中Template does not exit
    Django简单界面开发
    Django安装过程
    搭建NFS服务器和客户端过程中遇到的问题
    URL传值中文乱码的解决
    结合《需求征集系统》谈MVC框架
    对于微信小程序登录的理解图
    FpSpread基本句法
    sql,lambda,linq语句
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3783223.html
Copyright © 2020-2023  润新知