依然是项目结构图和所需jar包图:
显示配置文件hib-config.xml
再是springmvc-servlet.xml
web.xmldao层的userDao
package com.sxt.dao; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.stereotype.Component; import org.springframework.stereotype.Repository; import com.sxt.po.User; @Repository("userDao") public class UserDao { @Autowired private HibernateTemplate hibernateTemplate ; public void add(User u){ System.out.println("userDao.add()"); hibernateTemplate.save(u) ; } }
模型层的user类
package com.sxt.po; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity public class User { private int id ; private String name ; private String pwd ; public User(){} public User(String name,String pwd){ this.name = name ; this.pwd = pwd ; } @Id @GeneratedValue(strategy=GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
service层的userService类package com.sxt.service; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.sxt.dao.UserDao; import com.sxt.po.User; @Service("userService") public class UserService { @Autowired private UserDao userDao ; public void add(String name){ System.out.println("UserService.add()"); User u = new User() ; u.setName(name) ; userDao.add(u) ; } }controller层的userController类
package com.sxt.action; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.SessionAttributes; import com.sxt.service.UserService; @org.springframework.stereotype.Controller("userController") @RequestMapping("/user.do") @SessionAttributes({"uname"}) public class UserController{ @Autowired private UserService userService ; @RequestMapping(params="method=reg") public String reg(String uname){ System.out.println("UserController.reg()"); userService.add(uname) ; return "index" ; } @RequestMapping(params="method=reg2") public String reg2(@RequestParam("uname")String name,ModelMap map){ System.out.println("UserController.reg2()"); userService.add(name) ; map.put("b", "bbb") ; return "index" ; } @RequestMapping(params="method=reg3") public String reg3(String uname,ModelMap map){ System.out.println("UserController.reg3()"); userService.add(uname) ; System.out.println(uname); map.put("uname", uname) ; return "index" ; } @RequestMapping(params="method=reg4") public String reg4(String uname,ModelMap map){ System.out.println("UserController.reg4()"); // return "forward:user.do?method=reg3" ; //转发,不写默认就是转发 return "redirect:http://www.baidu.com" ;//重定向 } @RequestMapping(params="method=reg5") public String reg5(String uname){ System.out.println("UserController.reg4()"); return "redirect:http://www.baidu.com" ;//重定向 } }
MyAjaxController类
package com.sxt.action; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import com.sxt.po.User; @Controller @RequestMapping("myajax.do") public class MyAjaxController { @RequestMapping(params="method=test2",method=RequestMethod.GET) public @ResponseBody List<User> test1(String uname) throws Exception{ String uname2 = new String(uname.getBytes("iso8859-1"),"utf-8") ; System.out.println(uname2); System.out.println("MyAjaxController.test1()"); List<User> list = new ArrayList<User>() ; list.add(new User("吴海旭","123")) ; list.add(new User("韩敬琼","456")) ; System.out.println(list.size()); return list ; } }
FileUoLoadController类
package com.sxt.action; import java.io.File; import java.util.Date; import javax.servlet.ServletContext; import org.apache.log4j.chainsaw.Main; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.context.ServletContextAware; import org.springframework.web.multipart.commons.CommonsMultipartFile; @Controller("fileUpLoadController") public class FileUpLoadController implements ServletContextAware{ private ServletContext servletContext ; @Override public void setServletContext(ServletContext servletContext) { // TODO Auto-generated method stub this.servletContext = servletContext ; } @RequestMapping(value="/upload.do",method=RequestMethod.POST) public String handleUploadData(String name,@RequestParam("file")CommonsMultipartFile file){ if(!file.isEmpty()){ //获取本地存储路径,必须在项目下建立一个这种路径 String path = this.servletContext.getRealPath("/upload/") ; System.out.println(path); //获取文件名 String fileName = file.getOriginalFilename() ; //获取文件后缀名 String fileType = fileName.substring(fileName.lastIndexOf(".")) ; System.out.println(fileType); File file2 = new File(path,new Date().getTime()+fileType) ; try { file.getFileItem().write(file2) ; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return "redirect:upload_ok.jsp" ; }else{ return "redirect:upload_error.jsp" ; } } }
拦截器层的MyInterceptor类
package com.sxt.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyInterceptor implements HandlerInterceptor{ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub System.out.println("最后运行,一般用于释放资源!!!"); } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub System.out.println("action运行之后,生成视图之前!。"); } @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { // TODO Auto-generated method stub System.out.println("action之前运行"); return true; } }
MyInterceptor2类package com.sxt.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class MyInterceptor2 extends HandlerInterceptorAdapter{ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // TODO Auto-generated method stub System.out.println("MyInterceptor2.preHandle()"); return true; } }
用于測试ajax的a.jsp文件
index.jsp
index2.jsp
upload_error.jsp
upload_ok.jsp
</h1> </body> </html>
upload.jsp
至此整个springmvc重要的东西測试完成!