springmvc学习笔记
2017-06-01 13:45
337 查看
Springmvc是什么?
Springmvc是一个web层mvc框架
Springmvc执行流程
在web.xml配置前端控制器:DispatcherServlet
配置springmvc.xml
处理器映射器
BeanNameUrlHandlerMapping
功能:寻找Controller
根据url请求去匹配bean的name属性url,从而获取Controller
SimpleUrlHandlerMaping
功能:寻找Controller
根据浏览器url匹配简单url的key,key又Controller的id找到Controller
ControllerClassNameHandlerMapping
功能:寻找Controller
根据类名(MyController)类名.do来访问,类名首字母小写
处理器适配器
SimpleControllerHandlerAdapter
功能:执行controller
调用controller里面方法,返回modelAndView
HttpRequestHandlerAdapter
功能:执行controller
命令控制器
Springmvc通过命令设计模式接受页面参数。
自定义命令控制器
注解开发
注解开发流程
RequestMapping
requestMapping(“hello”)
requestMapping(“/hello.do”)
requestMapping(value=”/hello.do”)
requestMapping(value=”/hello.do”,method=RequestMethod.POST)
浏览器直接访问,a标签都是get请求
表单提交(指定post),ajax指定post提交,post提交。
自定义根路径
封装参数
分析接受参数类型:
基本类型,int,String等等基本类型。
Pojo类型
包装类型
Springmvc默认支持类型:
HttpSession,HttpRequstServlet,Model等等。
Struts2参数:基于属性封装。
Springmvc参数封装:基于方法进行封装。
封装int类型参数
接受参数方法
接受字符串类型
接受数组
接受Pojo
接受包装类型参数
接受集合类型参数
接受list集合
接受map
页面回显
URL模版映射
url模版映射可以restfull软件架构。
url模版映射过程
Restfull风格设计
转发和重定向
关键字:forward
本类进行转发:
本类方法与方法之间进行forward
转发方式:
方式一:return ”forward:list.do“;
重定向
关键字:redirect
本类进行重定向:
本类方法与方法之间进行redirect
重定向方式:
方式一:return ”redirect:list.do“;
跨类进行重定向:
转发方式:return ”redirect:/items/list.do“;
@responseBody和@RequestBody
@responseBody把后台pojo转换json对象,返回到页面。
@RequestBody接受前台json数据,把json数据自动封装javaBean。
修改springmvc
页面传递json格式
Ajax传递 json格式数据
Springmvc多视图
配置springmvc支持多视图
在springmvc配置
但是注意:javaBean不能添加@XmlRootElement。
@XmlRootElement提供对xml视图支持。
Springmvc是一个web层mvc框架
Springmvc执行流程
在web.xml配置前端控制器:DispatcherServlet
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springmvc</display-name> <filter> <filter-name>characterEncoding</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> </filter> <filter-mapping> <filter-name>characterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value 4000 > </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app>
配置springmvc.xml
<!-- 配置处理器映射器,springmvc默认的处理器映射器 BeanNameUrlHandlerMapping:根据bean(自定义Controler)的name属性的url去寻找hanler(Action:Controller) --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 简单处理器映射器: 把Url进行集中配置 --> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/abc.do">myController</prop> <prop key="/ss.do">http</prop> <prop key="/mine.do">http</prop> </props> </property> </bean> <!-- 定义通过: 类名.do 形式来访问controller --> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean> <!-- 配置处理器适配器执行Controlelr ,springmvc默认的 SimpleControllerHandlerAdapter:执行Controller --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean> <!-- HttpRequestHandlerAdapter负责执行实现接口HttpRequestHandler的后端 控制器。 --> <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"></bean> <!-- 配置自定义Controler --> <bean id="myController" name="/hello.do" class="com.shikun.controller.MyController"></bean> <!-- 配置自定义HttpController --> <bean id="http" class="com.shikun.controller.HttpController"></bean> <bean name="/command.do" class="com.shikun.controller.CommandController"></bean> <bean name="/toAdd.do" class="com.shikun.controller.ToAddController"></bean> <!-- 配置注解扫描 --> <context:component-scan base-package="com.shikun"></context:component-scan> <!-- 配置注解处理器映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> <!-- 配置注解处理器适配器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean> <!-- 配置sprigmvc视图解析器:解析逻辑试图 后台返回逻辑试图:index 视图解析器解析出真正物理视图:前缀+逻辑试图+后缀====/WEB-INF/jsps/index.jsp --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsps/"></property> <property name="suffix" value=".jsp"></property> </bean> </beans>
处理器映射器
BeanNameUrlHandlerMapping
功能:寻找Controller
根据url请求去匹配bean的name属性url,从而获取Controller
SimpleUrlHandlerMaping
功能:寻找Controller
根据浏览器url匹配简单url的key,key又Controller的id找到Controller
ControllerClassNameHandlerMapping
功能:寻找Controller
根据类名(MyController)类名.do来访问,类名首字母小写
处理器适配器
SimpleControllerHandlerAdapter
功能:执行controller
调用controller里面方法,返回modelAndView
HttpRequestHandlerAdapter
功能:执行controller
命令控制器
Springmvc通过命令设计模式接受页面参数。
自定义命令控制器
注解开发
注解开发流程
RequestMapping
requestMapping(“hello”)
requestMapping(“/hello.do”)
requestMapping(value=”/hello.do”)
requestMapping(value=”/hello.do”,method=RequestMethod.POST)
浏览器直接访问,a标签都是get请求
表单提交(指定post),ajax指定post提交,post提交。
自定义根路径
封装参数
分析接受参数类型:
基本类型,int,String等等基本类型。
Pojo类型
包装类型
Springmvc默认支持类型:
HttpSession,HttpRequstServlet,Model等等。
Struts2参数:基于属性封装。
Springmvc参数封装:基于方法进行封装。
封装int类型参数
接受参数方法
接受字符串类型
接受数组
接受Pojo
接受包装类型参数
接受集合类型参数
接受list集合
接受map
页面回显
@RequestMapping("list") public String list(Model model){ //model 相当于application域对象 List<User> userList = new ArrayList<User>(); User user1 = new User(); user1.setId(1); user1.setSex("男"); user1.setUsername("坤哥"); user1.setAddress("地球"); user1.setBirthday(new Date()); User user2 = new User(); user2.setId(2); user2.setSex("男2"); user2.setUsername("坤哥222"); user2.setAddress("地球222"); user2.setBirthday(new Date()); User user3 = new User(); user3.setId(3); user3.setSex("男3"); user3.setUsername("坤哥333"); user3.setAddress("地球333"); user3.setBirthday(new Date()); userList.add(user1); userList.add(user2); userList.add(user3); model.addAttribute("userList", userList); return "list";
URL模版映射
url模版映射可以restfull软件架构。
url模版映射过程
Restfull风格设计
转发和重定向
关键字:forward
本类进行转发:
本类方法与方法之间进行forward
转发方式:
方式一:return ”forward:list.do“;
重定向
关键字:redirect
本类进行重定向:
本类方法与方法之间进行redirect
重定向方式:
方式一:return ”redirect:list.do“;
跨类进行重定向:
转发方式:return ”redirect:/items/list.do“;
@responseBody和@RequestBody
@responseBody把后台pojo转换json对象,返回到页面。
@RequestBody接受前台json数据,把json数据自动封装javaBean。
修改springmvc
页面传递json格式
Ajax传递 json格式数据
Springmvc多视图
配置springmvc支持多视图
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <!-- 配置支持媒体类型 --> <property name="contentNegotiationManager"> <bean class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="mediaTypes"> <map> <entry key="json" value="application/json"></entry> <entry key="xml" value="application/xml"></entry> </map> </property> </bean> </property> <!-- 指定默认视图 --> <property name="defaultViews"> <!-- 支持多个视图 --> <list> <!-- 对josn格式视图支持 --> <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"></bean> <!-- xml格式视图支持 --> <bean class="org.springframework.web.servlet.view.xml.MarshallingView"> <constructor-arg> <bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="classesToBeBound"> <list> <value>com.shikun.domain.User</value> </list> </property> </bean> </constructor-arg> </bean> </list> </property> </bean> 约定rest目录下所有以json和xml扩展名都支持相应的视图 <mvc:annotation-driven/> <mvc:annotation-driven/>默认创建注解处理器映射器,注解处理器适配器。提供json格式支持。
在springmvc配置
但是注意:javaBean不能添加@XmlRootElement。
@XmlRootElement提供对xml视图支持。
Springmvc文件上传 <img src=”图片路径”/> //把文件关联表单 //触发ajax事件 <input type=file onchange=“ajax事件”/> <input type=”hidden” value=”图片相对路径”/> uploadController 使用jersy服务器进行跨服务器上传: @Controller @RequestMapping("/upload") public class UploadController { @RequestMapping("uploadPic") public void uploadPic(HttpServletRequest request,String fileName,PrintWriter out){ //把Request强转成多部件请求对象 MultipartHttpServletRequest mh = (MultipartHttpServletRequest) request; //根据文件名称获取文件对象 CommonsMultipartFile cm = (CommonsMultipartFile) mh.getFile(fileName); //获取文件上传流 byte[] fbytes = cm.getBytes(); //文件名称在服务器有可能重复? String newFileName=""; SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); newFileName = sdf.format(new Date()); Random r = new Random(); for(int i =0 ;i<3;i++){ newFileName=newFileName+r.nextInt(10); } //获取文件扩展名 String originalFilename = cm.getOriginalFilename(); String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")); //创建jesy服务器,进行跨服务器上传 Client client = Client.create(); //把文件关联到远程服务器 WebResource resource = client.resource(Commons.PIC_HOST+"/upload/"+newFileName+suffix); //上传 resource.put(String.class, fbytes); //ajax回调函数需要会写写什么东西? //图片需要回显:需要图片完整路径 //数据库保存图片的相对路径. String fullPath = Commons.PIC_HOST+"/upload/"+newFileName+suffix; String relativePath="/upload/"+newFileName+suffix; //{"":"","":""} String result="{\"fullPath\":\""+fullPath+"\",\"relativePath\":\""+relativePath+"\"}"; out.print(result); } }
相关文章推荐
- 《Spring3.X企业应用开发实战》学习笔记--SpringMVC
- springMVC学习笔记之入门案例
- springMVC学习笔记四(数据类型转换和数据验证)
- ★SpringMVC学习笔记(1) 总记 学习资料
- springMVC学习笔记五(拦截器详解)
- springMVC学习笔记五(拦截器详解)
- SpringMVC学习笔记--解决乱码问题
- springMVC学习笔记四(数据类型转换和数据验证)
- SpringMVC学习笔记(5) 启用(优化)注解+静态资源访问
- springMVC学习笔记二(dispatcherServlet)
- springMVC学习笔记--初识springMVC
- SpringMVC学习笔记二
- SpringMVC学习笔记一
- springMVC学习笔记二(dispatcherServlet)
- springMVC学习笔记一(hello world)
- springMVC学习笔记之实战演练
- SpringMVC学习笔记三
- 学习笔记--SpringMVC 3.1下返回json时中文显示乱码问题的解决方案
- SpringMVC学习笔记(3) 框架配置+HelloWorld(非注解版)
- springMVC学习笔记六(注解方式实现控制器)