上一篇我们学习了注解式开发的配置方式并写了一个小Demo跑起来。今天我们来学习注解开发的参数接收。处理器方法中的常用参数有五类,这些参数会在系统调用时由系统自动赋值,即程序员可以在方法中直接使用。具体如下:

1:HttpServletRequest

2:HttpServletResponse

3:HttpSession

4:用户承载数据的Model

5:请求中所携带的请求参数

在进行参数接收之前我们先在/WebRoot/index.jsp下添加如下内容:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head> <body>
<form action="${pageContext.request.contextPath }/user/register.do">
姓名:<input name="name" type="text" />
年龄:<input name="age" type="text" />
<input type="submit" value="注册" />
</form>
</body>
</html>

在/WEB-INF/jsp/下建立success.jsp,内容如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>SpringMVC1</title>
</head> <body>
姓名:${name }<br />
年龄:${age }
</body>
</html>

接下来我们着重来看在Controller中如何进行参数的接收。

一、逐个接收

在cn.wechatbao.controller包下新建UserController,内容如下:

package cn.wechatbao.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; @Controller
@RequestMapping("/user")
public class UserController { @RequestMapping("/register.do")
public ModelAndView register(String name,int age) throws Exception {
ModelAndView mv = new ModelAndView();
mv.addObject("name", name);
mv.addObject("age", age);
mv.setViewName("/WEB-INF/jsp/success.jsp");
return mv;
}
}

注意:当程序写到这里的时候,功能基本就没有什么问题了,但是有一个小bug,就是前台传中文姓名的时候,会乱码。当然这个问题我们必须要考虑。只是这个问题由SpringMVC帮我早就考虑到了,所以我们只需要在web.xml中配置一个过滤器就OK了。

二、解决中文乱码

上面说了作为优秀的大型框架,SpringMVC已经为我们考虑了统一编码的问题。所以我们直接在web.xml中配置使用就OK了,具体配置方式如下:

<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>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

有的朋友可能看到这里的时候,已经迫不及待的试了一下。但是发现可能还是乱码。不要着急。这是由于tomcat已经配置了编码格式,server.xml里如果不配置编码格式,则默认是iso-8859-1,于是我们来修改tomcat的conf/server.xml文件,如下:

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" />

修改为:

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

三、校正请求参数名

假设前台的input的name为personName,而后台Controller需要接收的参数名称为name,这时我们就需要用另一个注解来校正请求参数名。如下

@RequestMapping("/register.do")
public ModelAndView register(@RequestParam("personName") String name,int age) throws Exception {
System.out.println("name="+name);
System.out.println("age="+age);
ModelAndView mv = new ModelAndView();
mv.addObject("name", name);
mv.addObject("age", age);
mv.setViewName("/WEB-INF/jsp/success.jsp");
return mv;
}

注意:@RequestParam("personName") String name该写法就是将前台的personName和后台的name进行一个映射。使之对应起来。

最新文章

  1. 开发人员必读openstack网络基础
  2. 25个增强iOS应用程序性能的提示和技巧--中级篇
  3. DAS、SAN、NAS的区别
  4. [HDOJ1043]Eight(康托展开 BFS 打表)
  5. 第三集 欠拟合与过拟合的概念、局部加权回归、logistic回归、感知器算法
  6. HDU 5688 Problem D
  7. Java正則表達式入门
  8. js展开更多
  9. Scala函数字面量简化写法
  10. servlet 中字符集的处理
  11. Entity framework 中Where、First、Count等查询函数使用时要注意
  12. 对JDK的深入理解
  13. python 私有方法
  14. 【洛谷P2142 高精度减法】
  15. Potplayer播放器使用笔记
  16. Consumer is not subscribed to any topics or assigned any partitions
  17. 学习笔记8—MATLAB中奇异值处理办法
  18. GoldenGate配置(三)之DDL复制配置
  19. float与double的范围和精度以及大小非零比较
  20. 版本管理工具---svn搭建与使用

热门文章

  1. application.properties 文件和 application.yml 文件的区别
  2. java学习笔记11-static关键字
  3. Cyclone IV FPGA 器件笔记
  4. CSS div内文字显示两行,超出部分省略号显示
  5. 关于COOKIE在本地可以正常写入发布后不能写入浏览器的问题
  6. 手把手详解持续集成之GitLab CI/CD
  7. 高性能伪事务之Lua in Redis
  8. 5G到来,App的未来,是JavaScript,Flutter还是Native ?
  9. MySQL之排序、分组(五)
  10. Unity iOS Appstore 上架的问题