springmvcの神总结のreadme

********李守宏springmvc********
3.==
--\springmvc一个controller实现多个方法
----\继承MultiActionController
----\配置spring-servlet的bean
5==静态文件的访问
----\<!-- 静态资源访问 -->
    <mvc:resources location="/image/" mapping="/image/**"></mvc:resources>
6注解启用访问
-->开起注解    spring2-3以后会被代替
    <!-- 开起注解使用注解 -->
    <context:component-scan base-package="com.tgb.controller"></context:component-scan>
    <!--找方法,找类 ,注解扫描包 -->
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"></bean>
7注解配置优化
-->    <!-- 注解优化,mvc的配置,以上2.0,3.0会被取代 -->
    <!-- 开起注解 -->
    <mvc:annotation-driven/>
    0.0:url重复会报错,貌似是我白天的错误,注意唯一标识
-->类上也可以使用注解
    @Controller
    @RequestMapping(value="/user2")
    public class User2Controller {
-->method=.post/.get去掉,可一省掉很多麻烦
-->value="/user" value也可以省去
    @RequestMapping("/addUser")
-->modelandview 也可以省掉
8springmvc参数传递
-->springmvc会自动匹配到后台和jspname一样的值并传递
-->鉴于每次都要使用request,我可以建一个基类,里面提供request,哈哈哈
-->web.xml强制编码格式
9->通过实体类的get set传递值,前台name和实体类中必须一致
9json ajax 传递数据
    $(function(){
        $("#add").click(function(){
            var userName=$("#userName").attr("value");
            var age=$("#age").attr("value");
            var user={userName:userName,age:age}
        
            $.ajax({
                url:"/springmvc/user/data/addUser",
                type:"post",
                data:user,
                success:function(data){
                    alert("userName--->"+data.userName+"age--->"+data.age);
                }
            });
        });
    });
注意,会因为相对路径问题出错,可以右击图片属性查看地址看了解,见识啊
10-json传递数据到页面
使用printWriter 打印
    String result = "{\"userName\":\" "+ user.getUserName()+"\",\"age\":\""+user.getAge()+"\"}";
        PrintWriter out = response.getWriter();;
        //设置http相应类型
        response.setContentType("application/json");
        out.write(result);
11-文件上传
-->导入io和upload的jar包
-->enctype属性规定发送到服务器之前应该如何对表单数据进行编码
-->上传文件时form必须加enctype="enctype="multipart/form-data"
-->配置xml
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">   
          <property name="maxUploadSize"><value>100000</value></property> 
          <property name="defaultEncoding"><value>UTF-8</value></property>
          <property name="maxInMemorySize" value="40960"></property> 
    </bean> 
-->文件上传必须采用post方式 
    get方式是用url提交,文件自然不是url
12上传文件优化,不推荐使用springmvc的上传,推荐使用jquery的上传,可以再客户端使用,减少web的压力
spring通过对servlet的httpservletrequest接口进行扩展,时期能够很好的处理文件上传,扩展后的几口名为
interface MultipartHtpServletRequest extends HttpServletRequest{
    public MultipartFile getFile(String name);
    public Map getFileMap();
    public Iterator getFileNames();
}
@RequestMapping("upload2")
    public String upload2(HttpServletRequest request,HttpServletResponse response) throws Exception, IOException{
        //定义解析器,实例化,解析springmvc的上下文
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        //解析request,判断是否为Multipart类型数据
        if(multipartResolver.isMultipart(request)){
        //是则定义springmvc封装好的request
        MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest)(request);
        //拿文件,迭代器,封装好的
        Iterator<String> iterator = multipartHttpServletRequest.getFileNames();
            while(iterator.hasNext()){
                //如果有根据迭代器中的下一个名字获取文件,MultipartFile是springmvc封装好的文件类
                MultipartFile file = multipartHttpServletRequest.getFile((String)iterator.next());
                if(file!=null){
                    String fileName = "demoUpload"+file.getOriginalFilename();
                    String path = "D:/"+fileName;
                    //创建一个本地关联路径的文件对象
                    File localFile = new File(path);
                    //将文件对象写到指定(本地)文件上,springmvc提供的方法
                    file.transferTo(localFile);
                    //还可以拿到输入流,就可以拿到数据or文件
                    file.getInputStream();
                }
                
            }
        }
        return "success";
    }
13springmvc和spring集成
-->web.xml中的启动顺序
    <context-param>->listener-filter-servlet
    <!-- Struts2的action由Spring来负责进行实例化 spring+struts2集成的关键点  -->
    <constant name="struts.objectFactory" value="spring" />
->1:添加jar包,spring和springmvc用jar包类似
  2:配置web.xml文件

 

posted @ 2016-08-22 09:40  公众号java-codestack  阅读(201)  评论(0编辑  收藏  举报