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>