javaEE Springmvc,接收请求参数,解决POST传参乱码

Springmvc的jar包下载:https://pan.baidu.com/s/1Uu5R96z4LwwtydGq4B60Xg  密码:8c3n

 

ItemController.java(Controller处理器,传统Servlet方式接收参数):

package com.xxx.springmvc.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.HttpRequestHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import com.xxx.springmvc.pojo.Items;
import com.xxx.springmvc.pojo.QueryVo;
import com.xxx.springmvc.service.ItemService;

//商品管理
@Controller  //Springmvc的Controller是单例的,Struts2的Action是多例的。  接收请求参数不能用成员变量(属性驱动)接收,而是通过方法的形参获取。
public class ItemController {
	
	@Autowired
	private ItemService itemService;
	
	
	//接收参数id;根据id修改商品
	@RequestMapping(value = "/itemEdit.action")  // .action可以省略(省略后不利于后期维护)。
	public ModelAndView toEdit(HttpServletRequest request,HttpServletResponse response
			,HttpSession session,Model model){
		
		//原生Servlet时代开发
		String id = request.getParameter("id");
		
		//根据id查询商品
		Items items = itemService.selectItemsById(Integer.parseInt(id));
		
		ModelAndView mav = new ModelAndView();
		//相当于往Request域中添加数据
		mav.addObject("item", items);  //jsp页面中可以通过el表达式${item}获取。
		mav.setViewName("editItem");  //指定view视图(jsp页面)
		return mav;
	}
	
}

ItemController.java(Controller处理器,通过方法形参自动接收请求参数(简单类型)(形参不能直接接收List、数组、日期类型)):

package com.xxx.springmvc.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.HttpRequestHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import com.xxx.springmvc.pojo.Items;
import com.xxx.springmvc.pojo.QueryVo;
import com.xxx.springmvc.service.ItemService;

//商品管理
@Controller
public class ItemController {
	
	@Autowired
	private ItemService itemService;
	
	
	//接收参数id;根据id修改商品
	@RequestMapping(value = "/itemEdit.action")
	//public ModelAndView toEdit(@RequestParam(value = "id",required = false,defaultValue = "1") Integer myId,
	//@RequestParam() 表示请求参数与对应接收的方法形参不同名时,可以通过@RequestParam配置形参对应接收哪个请求参数名,以及设置默认值等。
	public ModelAndView toEdit(Integer id,
			HttpServletRequest request,HttpServletResponse response,HttpSession session,Model model){
		
		//直接通过方法的形参id获取同名的请求参数。  形参类型建议使用基本类型对应的包装类型,因为可能会为null。
		//处理器适配器会默认识别并进行赋值。
		
		//根据id查询商品
		Items items = itemService.selectItemsById(id);
		ModelAndView mav = new ModelAndView();
		mav.addObject("item", items);
		mav.setViewName("editItem");
		return mav;
	}
	
}

ItemController.java(Controller处理器,接收参数并封装成对象(复杂类型).(List类型、数组类型)):

package com.xxx.springmvc.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.xxx.springmvc.pojo.Items;
import com.xxx.springmvc.pojo.QueryVo;
import com.xxx.springmvc.service.ItemService;

//商品管理
@Controller
public class ItemController {
	
	@Autowired
	private ItemService itemService;
	
	
	//提交修改商品。 接收参数并封装成Items对象
	@RequestMapping(value = "/updateitem.action")  
	public ModelAndView updateitem(Items items){ //形参可以是数组类型,来接收数组参数;但不能接收List类型。List类型必须通过POJO类或者包装类的属性来接收。
		//通过形参items自动接收请求参数并封装成items对象。 (前端表单元素的name属性必须与Items实体类的属性保持一致,才能自动封装)
		//如果对象属性(hobbyList)是List类型,前端表单元素的name可以设为hobbyList[0]来传参
		//与方法形参的类型Items有关,与形参名items无关。
		
		//修改
		itemService.updateItemsById(items);
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("success");
		return mav;
	}
	
}

 ItemController.java(Controller处理器,接收参数并封装到POJO包装对象中(可以包装List、数组类型)):

package com.xxx.springmvc.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.xxx.springmvc.pojo.QueryVo;
import com.xxx.springmvc.service.ItemService;

//商品管理
@Controller
public class ItemController {
	
	@Autowired
	private ItemService itemService;
	
	
	//提交修改商品。  (接收参数封装到POJO包装类型中)
	@RequestMapping(value = "/updateitem.action")  
	public ModelAndView updateitem(QueryVo vo){
		//前端表单元素的name属性值必须是items.xxx,接收参数时才能封装到QueryVo包装类的成员变量items中来。
		
		//修改
		itemService.updateItemsById(vo.getItems());
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("success");
		return mav;
	}
	
}

QueryVo.java(POJO包装类):

package com.xxx.springmvc.pojo;

public class QueryVo {
	
	//商品 POJO实体对象
	private Items items;  //前端表单元素的name属性值必须是items.xxx,接收参数时才能封装到成员变量items中来。

	public Items getItems() {
		return items;
	}

	public void setItems(Items items) {
		this.items = items;
	}
	
}

web.xml(Web项目核心配置文件,解决POST传参乱码问题(国际化)):



  springmvc-mybatis
  
  
  	contextConfigLocation
  	classpath:applicationContext.xml
  
  
  
  
  	org.springframework.web.context.ContextLoaderListener
  
  
  
  
  	encoding
  	org.springframework.web.filter.CharacterEncodingFilter
  	
  		encoding
  		UTF-8  
  	
  
  
  
  	encoding
  	*.action
  
  
  
  
  
  	springmvc
  	org.springframework.web.servlet.DispatcherServlet
  	
  	
  		contextConfigLocation
  		classpath:springmvc.xml
  	
  
  
  
  	springmvc
  	
  	*.action
  
  
  
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
  
  

 

 

你可能感兴趣的:(javaEE)