• springmvc06


    处理器方法的参数


    处理器方法可以包含以下四类参数,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用。

    1 HttpServletRequest 请求
    2 HttpServletResponse 应答
    3 HttpSession 会话
    4 请求中所携带的请求参数
    1
    2
    3
    4

    前三类参数使用方式

    @Controller
    public class MyController {
    @RequestMapping(value = "/some.do")
    public ModelAndView doSome(HttpServletRequest request,
    HttpServletResponse response,
    HttpSession session){
    ModelAndView mv = new ModelAndView();
    mv.addObject("msg","欢迎使用springmvc做web开发" + request.getParameter("name"));
    mv.addObject("fun","执行的是doSome方法");
    mv.setViewName("show");
    return mv;
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    逐个参数接收
    接收用户提交的参数:处理器(控制器)方法的形参名和请求中的参数必须一致

    @Controller
    public class MyController {
    /*
    * 逐个接收请求参数:
    * 要求:处理器(控制器)方法的形参名和请求中的参数必须一致
    * 同名的请求参数赋值给同名的参数
    *
    * 框架接收请求参数:
    * 1 使用request对象接收请求参数
    * String strName = request.getParameter("name");
    * String strAge = request.getParameter("age");
    * 2 springmvc框架通过dispatcherServlet 调用MyController的doSome方法
    * 调用方法时,按名称对应,把接收的参数赋值给形参 doSome(strName,Integer.valueOf(strAge))
    * 框架会提供类型转换的功能,把String转换为 int ,long ,float ,double等
    *
    * */
    @RequestMapping(value = "/some.do")
    public ModelAndView doSome(String name,Integer age){
    System.out.println("dosome方法的,name="+name+", age="+age);

    ModelAndView mv = new ModelAndView();
    mv.addObject("myname",name);
    mv.addObject("myage",age);
    mv.setViewName("show");
    return mv;
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27

    对应的index.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
    <title>Title</title>
    </head>
    <body>
    <p>提交参数给Controller</p>

    <form action="some.do" method="post">
    姓名:<input type="text" name="name"><br/>
    年龄:<input type="text" name="age"><br/>
    <input type="submit" value="提交参数">
    </form>

    <%-- <p><a href="user/other.do">发起other.do请求</a></p>--%>
    </body>
    </html>
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    注意:在提交请求参数的时候,get请求方式中文没有乱码;post请求方式中文有乱码,需要使用过滤器处理乱码问题。

    //在web.xml配置过滤器
    <!--注册声明过滤器,解决post请求乱码的问题-->
    <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

    <!--设置项目中使用的字符编码-->
    <init-param>
    <param-name>encoding</param-name>
    <param-value>utf-8</param-value>
    </init-param>

    <!--强制请求对象(HttpServletRequest)使用encoding编码的值-->
    <init-param>
    <param-name>forceRequestEncoding</param-name>
    <param-value>true</param-value>
    </init-param>

    <!--强制应答对象(HttpServletResponse)-->
    <init-param>
    <param-name>forceResponseEncoding</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>

    <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <!--
    /* : 表示强制所有的请求先通过过滤器处理
    -->
    <url-pattern>/rl-pattern>
    </filter-mapping>

  • 相关阅读:
    结合项目实例 回顾传统设计模式(五)单例模式
    CUDA并行计算框架(二)实例相关。
    结合项目实例 回顾传统设计模式(八)模板方法模式
    结合项目实例 回顾传统设计模式(三)装饰者模式
    结合项目实例 回顾传统设计模式(十一)代理模式
    趣谈.net大型电子商务 亲~ 走过路过不要错过~
    结合项目实例 回顾传统设计模式(九)迭代器模式
    DataTable的操作类
    xslt调用自定义函数(C#/Js/Java)
    优秀的前段框架Bootstrap推荐
  • 原文地址:https://www.cnblogs.com/huaobin/p/14908513.html
Copyright © 2020-2023  润新知