Spring MVC笔记

来源:互联网 发布:闲在家里的日子 知乎 编辑:程序博客网 时间:2024/06/05 17:11

2--spring2.5_mvc框架_02_基于2.5的注解_项目开发(包含整合hibernate).flv

 1、@controller 控制器(注入服务)
 2、@service 服务(注入dao)
 3、@repository dao(实现dao访问)
 4、@component (把普通pojo实例化到spring容器中,相当于配置文件中的<bean id="" class=""/>)


 @RequestMapping("/user.do)     //<form action="user.do"/>

 @Resourse
 private UserService userService;   //注入

 @RequestMapping(params="method=reg")  //在jsp页面写一个隐藏域
           <input type=hidden name=method value=reg/>
           如果访问一个方法就得写一个隐藏域,默认是类继承Controller
           后的一个默认方法handleRequest
  //struts2传参用属性 private String name; springmvc传参是方法中传参
 public String reg(String uname){  //<input type="text" name="uname"/>
        
 }
 or
 @RequestMapping(params="method=reg2")
 public String reg(User user){
  System.out.println(user.getUsername);      
 }
3--Spring MVC 3.0 深入

 @RequestMapping(params="method=reg2")
 public ModelAndView reg2(){
  //return new ModelAndView("index");
  ModelAndView mv = new ModelAndView("index");
  return mv;
 }

基于springmvc 3.0实现文件上传
 1.加入commons-fileupload.jar
  加入commons-io.jar
 2.配置文件
 3.
  <form action="upload.do" method="post" enctype="multipart/form-data">
   <input type="text" name="name"/>
   <input type="file" name="file"/>
   <input type="submit"/>
  </form>
 4.建立控制器
  在webroot下建一个uploadFile文件用于暂时存放上传的文件
  在tomcat下的springmvc下建一个tmp文件用于存放上传的文件
 5.
  @RequestMapping(value="/upload.do", method = RequestMethod.POST)
  public String handleUploadData(String name,@RequestParam("file")[一定要加。]CommonsMultipartFile file){
   if (!file.isEmpty()) {
       String path = this.servletContext.getRealPath("/tmp/");  //获取本地存储路径
       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) {
      e.printStackTrace();
       }
       return "redirect:upload_ok.jsp";
    }else{
     return "redirect:upload_error.jsp";
    }
  }
处理ajax请求
 1、下载jar包
  jackson-core-asl.jar
  jackson-mapper-asl.jar
 2
 
spring中的拦截器
 1、实现接口:org.springframework.web.servlet.HandlerInterceptor
  接口中有三个方法:preHandle(),如果返回true,则继续执行action
       postHandle()
       afterCompletion()
     或者继承适配器:org.springframework.web.servlet.handle.HandlerInterceptorAdapter
   一般情况下只需重写方法preHandle()
   
 2、springmvc_servlet.xml中配置
  1)拦截所有springmvc的url! 即拦截所有的.do请求
   <mvc:interceptors>
    <bean class="com.sxt.interceptor.MyInterceptor"></bean> <!-- 拦截所有springmvc的url! -->
   </mvc:interceptors>
  2)拦截指定的springmvc的url! 即拦截所有的user.do请求
   <mvc:interceptors>
    <bean class="com.sxt.interceptor.MyInterceptor"></bean>  //所有请求都拦截,执行MyInterceptor
    <mvc:interceptor>  //可设置多个指定的拦截器请求
     <mvc:mapping path="/user.do" />
     <!--<mvc:mapping path="/test/*" />-->
     <bean class="com.sxt.interceptor.MyInterceptor2"></bean>   //只拦截user.do,执行MyInterceptor和MyInterceptor2
    </mvc:interceptor>
   </mvc:interceptors>
   
   注意:解决ajax请求有缓存,第一次拦截,第二次不拦截的情况:在url参数的后面加"&a="+Math.random()

0 0
原创粉丝点击