springmvc学习----3.请求处理

2022-08-02,,,

请求处理

	/**
	 * 获取请求信息
	 * @RequestParam:获取请求参数,若方法参数和请求参数则可以不使用此注解,springmvc会自动封装
	 * 使用注解可以指定获取那个参数的值,如果没带则会报400,可以设置required=false来避免
	 * defaultValue可以指定默认值
	 * @RequestHeader:根据key获取请求头中的值,例如:User-Agent,但是如果请求头中没有这个参数就会报错
	 * @CookieValue:根据key获取cookie的值,例如:JSESSIONID
	 */
	@RequestMapping("/handler01")
	public String handler01(
			@RequestParam(value = "username",required = false,defaultValue = "null") String username,
			@RequestHeader(value = "User-Agent",required = false,defaultValue = "null") String userAgent,
			@CookieValue(value = "JSESSIONID",required = false,defaultValue = "null")String JSESSIONID) {
		System.out.println("获取到的值:"+username);
		System.out.println("userAgent:"+userAgent);
		System.out.println("JSESSIONID:"+JSESSIONID);
		return "success";
	}
	/**
	 * 如果参数是pojo,则spring会自动封装对象,每一个属性按照name尝试赋值
	 */
	@RequestMapping("/handler02")
	public String handler02(Person person) {
		System.out.println(person);
		return "success";
	}
	/**
	 * 在方法中也可以传入一些原生API
	 * 例如:request,response,session,Principal
	 * Locale,InputStream,OutputStream,Reader,Writer
	 * @throws Exception 
	 */
	@RequestMapping("/handler03")
	public String handler03(HttpServletRequest request,HttpServletResponse response) throws Exception {
		response.setContentType("text/html;charset=utf-8");
		request.setCharacterEncoding("utf-8");
		request.setAttribute("msg", "你好");
		return "success";
	}

但是如果页面传过来的数据为中文,则可能会出现乱码的情况:

  • 请求乱码
    • GET请求:修改tomcat安装目录下的server.xml配置,在8080端口标签处添加属性:URIEncoding=“UTF-8”
    • POST请求:在第一次获取请求参数之前设置:request.setCharacterEncoding(“UTF-8”)
  • 响应乱码
    • response.setContentType(“text/html;charset=utf-8”)
      所以我们可以先一个过滤器来处理乱码问题,而spring已经帮我们写好了这个过滤器:CharacterEncodingFilter,注意这个过滤器最好配置在其他过滤器前面,否则可能不起作用
	<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>
		<init-param>
			<param-name>forceResponseEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

本文地址:https://blog.csdn.net/weixin_44246189/article/details/107367301

《springmvc学习----3.请求处理.doc》

下载本文的Word格式文档,以方便收藏与打印。