SpringMVC笔记(6) 参数的传递+乱码解决

一、 Spring MVC 的请求参数获取 

  1. 通过@PathVariabl注解获取路径中传递参数
    JAVA
    1      @RequestMapping(value  =   " /{id}/{str} " )
    2       public  ModelAndView helloWorld(@PathVariable String id,
    3              @PathVariable String str) {
    4          System.out.println(id);
    5          System.out.println(str);
    6           return   new  ModelAndView( " /helloWorld " );
    7      }
  2. 用@ModelAttribute注解获取POST请求的FORM表单数据
    JSP
    1  < form method = " post "  action = " hao.do " >
    2  a:  < input id = " a "  type = " text "    name = " a " />
    3  b:  < input id = " b "  type = " text "    name = " b " />
    4  < input type = " submit "  value = " Submit "   />
    5  </ form >

    JAVA pojo
    1  public   class  Pojo{
    2       private  String a;
    3       private   int  b;
    4     
    5 

    JAVA controller
    1  @RequestMapping(method  =  RequestMethod.POST)
    2       public  String processSubmit(@ModelAttribute( " pojo " ) Pojo pojo) { 
    3          
    4           return   " helloWorld " ;
    5      }
  3. 直接用HttpServletRequest获取
    JAVA
    1      @RequestMapping(method  =  RequestMethod.GET)
    2       public  String get(HttpServletRequest request, HttpServletResponse response) {
    4          System.out.println(request.getParameter( " a " ));
    5           return   " helloWorld " ;
    6      }

  4. 用注解@RequestParam绑定请求参数a到变量a
    当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,
    例如:
     
    @RequestParam(value="a", required=false)

    JAVA
    1      @RequestMapping(value  =   " /requestParam " , method  =  RequestMethod.GET)
    2       public  String setupForm(@RequestParam( " a " ) String a, ModelMap model) {
    3          System.out.println(a);
    4          return "helloWorld";}

再提供两种方式

@RequestMapping("/UpdateUser")
	public String UpdateUserInfo(User user,HttpServletRequest request){
		request.setAttribute("name", user.getName());
		request.setAttribute("age", user.getAge());
		return "/UpdateUserResult";
	}
	
	@RequestMapping("/UpdateUser2")
	public ModelAndView UpdateUserInfo2(String name,int age){
		ModelAndView mav=new ModelAndView();
		mav.setViewName("/UpdateUserResult");     //设置返回的文件名
		mav.addObject("name", age);
		mav.addObject("state", age);
		return mav;
	}

二、乱码问题

部分摘自 http://copperfield.iteye.com/blog/968167

http://blog.csdn.net/xuechongyang/article/details/8283924

springMVC提交表单出现乱码:

在web.xml中已配置了filter

<!-- 防止中文参数乱码 -->
	  <filter>
		  <filter-name>SetCharacterEncoding</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>forceEncoding</param-name>
			   <param-value>true</param-value>
			   <!-- 强制进行转码 -->
		  </init-param>
	 </filter>
	 <filter-mapping>
		  <filter-name>SetCharacterEncoding</filter-name>
		  <url-pattern>/*</url-pattern>
	 </filter-mapping>
	 <!-- 防止中文参数乱码 -->

但仍显示乱码
解决方案:指定表单提交方式为“post”
分析: 过滤器中request.setCharacterEncoding("UTF-8");
当你的表单的method使用了get的时候,这个request.setCharacterEncoding也不起作用了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值