(二十)处理器方法的参数---请求中所携带的请求参数、乱码问题characterEncodingFilter

本文介绍如何在Web应用中通过不同方法处理表单数据,并提供了解决POST和GET请求中文乱码问题的有效方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

index.jsp 

一、使用HttpServletRequest获取 

@RequestMapping("/login.do")  
public String login(HttpServletRequest request){  
    String name = request.getParameter("name")  
    String pass = request.getParameter("pass")  
}  

二、将表单参数注入到方法形参,注意和表单的字段一致

Controller 

框架的处理方式:

  ①使用request对象接收参数

           String strName=request.getParameter("name");

           String strAge=request.getParameter("age");

②使用处理器适配器对象,调用处理器方法

      doSome(strName,Integer.parseInt(strAge))

 

三、自动注入Bean属性 

<form action="login.do">  
用户名:<input name="name"/>  
密码:<input name="pass"/>  
<input type="submit" value="登陆">  
</form>  
  
//封装的User类  
public class User{  
  private String name;  
  private String pass;  
}  


@RequestMapping("/login.do")  
public String login(User user)  
{  
   syso(user.getName());  
   syso(user.getPass());  
}  

show.jsp

 

 中文乱码解决方法

一、解决post请求乱码问题

在web.xml中配置一个CharacterEncodingFilter过滤器,设置成utf-8;

        <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)对象,使用encoding的字符编码-->
		<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>

二、get请求中文参数出现乱码解决方法有两个:

①修改tomcat配置文件添加编码与工程编码一致,如下:

<ConnectorURIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>

 ②另外一种方法对参数进行重新编码:

String userName = new String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")

ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值