zoukankan      html  css  js  c++  java
  • 【SpringMVC】url映射传参

    web.xml

    <servlet>
            <servlet-name>hello</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <!--servlet-class 固定值,将servlet-name注册给 DispatcherServlet -->
            <load-on-startup>1</load-on-startup>
            <!--服务器加载配置文件顺序,有此属性时可以在服务器启动时加载.xml文件,进行文件的校验,能够较快的分析出是代码出错还是配置文件出错-->
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath*:spring-mvc.xml</param-value>
            </init-param>
            <!--加载初始配置项,此属性配置可以更改系统默认加载.xml的路径,其中param-name为固定值param-value值为所放xml路径,classpath*表示类路径,可用通配符表示配置文件(*.xml)-->
        </servlet>
        <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>*.do</url-pattern>
            <!--url-pattern 以/开头和以/*结尾的是用来做路径映射的
                          以前缀*.开头用来做扩展的
                          单独/是用来default servlet映射的 
                  -->
        </servlet-mapping>

    spring-mvc.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:context="http://www.springframework.org/schema/context"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
    
        <context:component-scan base-package="com.wf.springmvc.controller" />
        <!-- 扫描基包下的所有注解类 -->
    
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
            p:viewClass="org.springframework.web.servlet.view.JstlView"
            p:prefix="/WEB-INF/view/"
            p:suffix=".jsp"/>
            <!-- 配置视图名称解析器,配置
            p:prefix属性指定controller返回页面的所存放的路径
            p:suffix属性指定页面的类型,他们共同组成返回的路径
            p:viewClass属性是在返回到jsp页面进行解析jstl标签 -->
    </beans>

    配置注解 
    @RequestMapping 路径注解属性,可以注解类也可以注解方法。有value属性(一个参数时默认)指定url路径解析,method属性指定提交方式(默认为get提交) 
    @RequestParam 请求规则注解,value属性匹配前台传递的参数(一个参数时默认),required属性此字段是否必须传值(boolean,默认为true),defaultValue此参数的默认值(存在此参数时,说明前台不必需传递参数,required为false) 
    @PathVariable 注解绑定Url传过来的值到方法的参数上面,此注解一般用于url模板传参。 
    注意RequestParam 与PathVariable 的区别

    1. 方式一 基本的传递
        @RequestMapping("/login")   // url:http://localhost:8080/login/login.do 
        public String login(HttpServletRequest request){
                String name=request.getParameter("name"); // 获取前台传递的参数
            return "start";
        }
     2. 方式二 利用超链接进行跳转传递参数 前台name需要与注解RequestParam的参数保持一致。(传递少许参数)
        @RequestMapping("/login")  //url:http://localhost:8080/login/login.do?name=tom
        public String login(@RequestParam(value="age",required=false,defaultValue="24") String agenum,@RequestParam("name") String name){
            System.out.println(agenum); // 前台参数自动绑定到idmun中
            System.out.println(name); 
            return "start";
        }
     3. 方式三 url模板传参,将参数作为路径的一部分,不建议使用
        @RequestMapping("/login/{name}/{id}")
        // http://localhost:8080/login/login/lisi/m123.do  
        public String login(@PathVariable("name") String name01,@PathVariable("id") String id01){
            System.out.println(name01);
            System.out.println(id01);
            return "start";
        }
     4. 方式四 指定提交方式,RequestMethod类的相应属性(常用)
        @RequestMapping("/check",method=RequestMethod.POST)
        public String check(HttpServletRequest request,HttpServletResponse response ){
            String name=request.getParameter("name");
            String pwd=request.getParameter("pwd");
            if("tom".equals(name) && "1234".equals(pwd)){
                return "success";
            }
            return "error";
        }
    
     5. 方式五 post提交表单 传递模型Model参数 将表单封装为对应的javabean进行传递(常用)
        @RequestMapping(value="/check",method=RequestMethod.POST)
        public String check(User user){
            if("tom".equals(user.getName()) && "1234".equals(user.getPwd())){
                return "success";
            }
            return "error";
         }
    
    
     6. 特殊的 属性编辑器 在前台到后台data日期类型等的转化会出错,此时我们需要属性编辑器进行属性的转化
         //日期传递参数会产生异常,因此在传递时间参数时,需要进行类型转换,在初始化时进行数据的绑定与转化
    
        @RequestMapping(value="/todate/{data}",method=RequestMethod.GET)
        public String todate(@PathVariable("data") Date date){
            System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date));
            return "start";
        }
        @InitBinder    //初始化参数绑定, 日期类型的转化,
        public void initBinder(ServletRequestDataBinder binder){
            binder.registerCustomEditor(java.util.Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
        }

    在拦截的url中,不否定在不同类中有相同路径,例如在StudentController和StudentController中都会有相应的增删改查方法且方法的RequestMapping路径相同,此时我们就可以在类的注解加入相应的RequestMapping。例如路径http://localhost:8080/login/student/add.do 和 http://localhost:8080/login/teacher/add.do

    摘自:请尊重原创 http://blog.csdn.net/sinat_28978689/article/details/52483881

     

  • 相关阅读:
    vue-路由传参
    ES6模板字符串
    es6中Set和Map数据结构
    本周面试题
    var、let和const定义变量的特点
    修改this的指向
    Echarts图表插件
    ES6学习
    swiper插件学习
    每日刷题4
  • 原文地址:https://www.cnblogs.com/flydkPocketMagic/p/6906634.html
Copyright © 2011-2022 走看看