天天看点

SpringMVC 传参、重定向、文件上传

package com.dw.controller;

import java.io.UnsupportedEncodingException;

import javax.annotation.Resource;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import com.dw.entity.Person;
import com.dw.service.PersonService;

@Controller
public class PersonController {
	@Resource
	private PersonService personService;

	@RequestMapping("/toAdd")
	public ModelAndView toAdd(){
		ModelAndView modelAndView = new ModelAndView();
		modelAndView.setViewName("toAdd");		
		return modelAndView;
	}
	
	@RequestMapping("/toUpdate")
	public String toUpdate(){
		return "toUpdate";
	}

	/*
	 * 通过request来接受表单传递的参数
	 */
	/*
	@RequestMapping("/doAdd")
	public String doAdd(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{
		request.setCharacterEncoding("utf-8");
		String name = request.getParameter("name");
		Person person = new Person();
		person.setName(name);
		personService.add(person);
		request.setAttribute("name", name);
		return "doAddOk";
	}
	*/
	
	/*
	 * 当form提交参数与此不一致时,可以通过@RequestParam来设定,其中参数value和name效果相同,选择其一即可。
	 * Model 可以设置传输数据,可以通过EL表达式取出参数值,在web.xml中配置filter过滤器解决中文乱码问题
	 */
	/*
	@RequestMapping("/doAdd")
	public String doAdd(@RequestParam(required=true,value="name") String name1,Model model){
		Person person = new Person();
		person.setName(name1);
		personService.add(person);	
		model.addAttribute("name",name1);
		return "doAddOk";
	}
	*/
	
	
	/*
	 * 通过对象接受传递的参数,要求表单参数名与对象模型字段一致
	 */
	@RequestMapping("/doAdd")
	public String toAdd(Person person,Model model){
		model.addAttribute("name", person.getName());
		return "doAddOk";
	}
	
	/*
	 * 重定向
	 */
	/*
	@RequestMapping("/doAdd")
	public String doAdd(String name,RedirectAttributes attr){
		Person person = new Person();
		person.setName(name);
		personService.add(person);	
		attr.addFlashAttribute("name", name);
		return "redirect:toShow.do";
	}	
	
	@RequestMapping("/toShow")
	public String toShow(){
		return "toShow";
	}
	*/
}
           

过滤器-解决乱码问题,在web.xml中配置:

<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>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>characterEncodingFilter</filter-name>  
        <url-pattern>/*</url-pattern> 
    </filter-mapping>   
           

文件上传:

controller代码:

@RequestMapping("/upFile")
	public String upFile(@RequestParam("upfile") MultipartFile upfile,HttpServletRequest request) throws IllegalStateException, IOException{
		String preName = upfile.getOriginalFilename();
		String exeName = preName.substring(preName.lastIndexOf("."));
		String newName = UUID.randomUUID().toString()+exeName;
        String path = request.getRealPath("/pic")+"/";
		File file = new File(path+newName);
		upfile.transferTo(file);
		return "upFileOk";
	}
           

jsp:

<form action="upFile.do" method="post" enctype="multipart/form-data">
        <input type="file" name="upfile"><br>
        <input type="submit" value="提交"> 
     </form>
           

配置文件上传解析器:

sprinmvc.xml:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
       <property name="maxUploadSize" value="524288"/> <!-- 5MB -->
       <property name="defaultEncoding" value="gbk" />
    </bean>
           

继续阅读