springmvc-210803-02—处理器方法的参数&Post请求中文乱码
处理器方法的四类参数
处理器方法可以包含以下四类参数,这些参数会在系统调用时由系统自动赋值,即程序员可在方法内直接使用。
➢ HttpServletRequest
➢ HttpServletResponse
➢ HttpSession
➢ 请求中所携带的请求参数
1) 逐个接收
2) 对象接收
下面演示—请求中所携带的请求参数
在提交请求参数时,
get请求方式没有中文乱码,
post提交请求,会出现中文乱码,需要使用过滤器处理乱码问题。
过滤器可以自定义,也可以使用框架提供的过滤器CharacterEncodingFilter。
index.jsp(主页面)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>springmvc</title>
</head>
<body>
<form action="test/some.do" method="post">
<span>测试逐个接收参数</span>
<br/>
<span>name:</span><input type="text" name="name"/>
<br/>
<span>age:</span><input type="text" name="age"/>
<br/>
<button type="submit">提交</button>
</form>
<hr/>
<hr/>
<hr/>
<form action="test/testRequestParam.do" method="post">
<span>测试注解@RequestParam</span>
<br/>
<span>name:</span><input type="text" name="u_name"/>
<br/>
<span>age:</span><input type="text" name="u_age"/>
<br/>
<button type="submit">提交</button>
</form>
<hr/>
<hr/>
<hr/>
<form action="test/testReceiveObjectParam.do" method="post">
<span>测试接收对象参数</span>
<br/>
<span>name:</span><input type="text" name="u_name"/>
<br/>
<span>age:</span><input type="text" name="u_age"/>
<br/>
<button type="submit">提交</button>
</form>
</body>
</html>
MyController.java(处理器—处理请求参数)
package com.bgy.controller;
import com.bgy.vo.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/test")
public class MyController {
@RequestMapping(value = "/some.do")
public ModelAndView doSome(String name , Integer age){
ModelAndView mv= new ModelAndView();
mv.addObject("u_name",name);
mv.addObject("u_age",age);
mv.addObject("message","这是测试逐个接收请求");
System.out.println(name+" : "+age);
mv.setViewName("show");
return mv;
}
@RequestMapping(value = "/testRequestParam.do")
public ModelAndView testRequestParam(@RequestParam(value = "u_name") String name , @RequestParam(value = "u_age")Integer age){
ModelAndView mv= new ModelAndView();
mv.addObject("u_name",name);
mv.addObject("u_age",age);
mv.addObject("message","这是测试注解@RequestParam");
System.out.println(name+" : "+age);
mv.setViewName("show");
return mv;
}
@RequestMapping(value = "/testReceiveObjectParam.do")
public ModelAndView testReceiveObjectParam(Student student){
System.out.println(student);
ModelAndView mv= new ModelAndView();
mv.addObject("u_name",student.getU_name());
mv.addObject("u_age",student.getU_age());
mv.addObject("message","这是测试接收对象参数");
mv.setViewName("show");
return mv;
}
}
web.xml(配置过滤器解决post中文乱码)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<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>forceResponseEncoding</param-name>
<param-value>true</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>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
show.jsp(结果页面)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>show</title>
</head>
<body>
<span>message:${message}</span>
<br/>
<span>u_name:${u_name}</span>
<br/>
<span>u_age:${u_age}</span>
</body>
</html>
springmvc.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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.bgy.controller"></context:component-scan>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
Student.java
package com.bgy.vo;
public class Student {
private String u_name;
private String u_age;
public Student() {
System.out.println("Student无参构造执行了。。。。。");
}
public String getU_name() {
return u_name;
}
public void setU_name(String u_name) {
this.u_name = u_name;
}
public String getU_age() {
return u_age;
}
public void setU_age(String u_age) {
this.u_age = u_age;
}
@Override
public String toString() {
return "Student{" +
"u_name='" + u_name + '\'' +
", u_age='" + u_age + '\'' +
'}';
}
}