********李守宏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文件

springmvcの神总结のreadme的更多相关文章

  1. 【转】反编译获取任何微信小程序源码(完)

    一.前言最近在学习微信小程序开发,半个月学习下来,很想实战一下踩踩坑,于是就仿写了一个阿里妈妈淘宝客小程序的前端实现,过程一言难尽,差不多两周时间过去了,发现小程序的坑远比想象的要多的多!!在实际练手 ...

  2. 想要进步,就要阅读大神的博客,再推荐一波springmvc映射路径之url的action请求

    http://www.cnblogs.com/liukemng/p/3726897.html

  3. 【SSM框架】Spring + Springmvc + Mybatis 基本框架搭建集成教程

    本文将讲解SSM框架的基本搭建集成,并有一个简单demo案例 说明:1.本文暂未使用maven集成,jar包需要手动导入. 2.本文为基础教程,大神切勿见笑. 3.如果对您学习有帮助,欢迎各种转载,注 ...

  4. 使用Spring和SpringMVC管理bean时要注意的一个小细节

    最近一直在做毕业设计...用到了Shiro和SpringMVC..用过shiro的朋友都知道shiro需要自己去写Realm,然后把Realm注入到SecurityManager中.而Security ...

  5. JAVA过滤器与SpringMVC拦截器之间的区别

    今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊, 而且看的比较粗浅,没有一个全局而又细致的认识,由于已至 ...

  6. springmvc restful配置有一个小小的坑坑

    首先web.xml配置 <!-- spring-mvc --> <servlet> <servlet-name>springServlet</servlet- ...

  7. SpringMVC与Struts2区别与比较总结

    1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr ...

  8. Java过滤器与SpringMVC拦截器之间的关系与区别

    今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深 ...

  9. 13.SpringMVC和Spring集成(一) && 14.SpringMVC和Spring集成(二)

    1.概念 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,Spring致力于J2EE应用的各层的解决方案,Spring是企业应用开发的“一站式”选择,并贯 ...

随机推荐

  1. Vmware安装与VMware下Linux系统安装

    源文件地址:http://www.cnblogs.com/lclq/p/5619271.html 1.下载安装VMware,我安装的是VMware 12.VMware从11开始不再支持32位系统,32 ...

  2. 设计模式:状态模式(State)

    定  义:当一个对象内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况, 把状态的判断逻辑转移到表示不同状态的一系列子 ...

  3. hexo 搭建博客

    使用hexo搭建网站.记录一下. hexo搭建方法: https://wsgzao.github.io/post/hexo-guide/ http://jacob110.github.io/2015/ ...

  4. JS通用事件监听函数

    JS通用事件监听函数 版本一 //把它全部封装到一个对象中 var obj={ readyEvent:function (fn){ if(fn==null){ fn=document; } var o ...

  5. 为什么玩VR眼镜会头晕?

    为什么玩VR眼镜会头晕?看完本文你就懂了   很多用户都体验过各式各样的VR眼镜或者说头盔,但是不管哪一款,都很容易出现头晕的情况.相信大家都纳闷过,为什么玩VR眼镜会头晕?实际上这是和设备本身的技术 ...

  6. axis2_1.6.2之构建web端和客户端 .

    参考资料: http://blog.csdn.net/apei830/article/details/5448897 axis2的官网 http://axis.apache.org/axis2/jav ...

  7. C# Main函数的 args参数

    网上参考 博客,使用如下代码: using System; using System.Collections.Generic; using System.Linq; using System.Text ...

  8. 用仿ActionScript的语法来编写html5——第七篇,自定义按钮

    第七篇,自定义按钮这次弄个简单点的,自定义按钮.其实,有了前面所定义的LSprite,LBitmap等类,定义按钮就很方便了.下面是添加按钮的代码, function gameInit(event){ ...

  9. iOS - (集成支付宝SDK大坑总结)

    其实集成支付宝相对于集成微信支付来说,支付宝算是简单的了,后续有空再去研究微信支付,现目前先总结一下集成支付宝所遇到的坑,其实支付宝的坑也不算太多,细算下来大概5-6个左右,但是其报错方式有点恶心,不 ...

  10. Private strand flush not complete

    当切换日志的时候,所有private strands的内容都会被flush到当前的日志中,然后日志切换才可以完成. strand是在oracle 10g中引入的新术语,和redo的latches相关. ...