欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-31 09:04:22
请求处理...

请求处理

	/**
	 * 获取请求信息
	 * @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

上一篇:

下一篇: