04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
1. Spring-mvc介绍
1.1市面上流行的框架
Struts2(比较多)
Springmvc(比较多而且属于上升的趋势)
Struts1(即将被淘汰)
其他
1.2 spring-mvc结构
DispatcherServlet:中央控制器,把请求给转发到具体的控制类
Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置)
handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略
ModelAndView:服务层返回的数据和视图层的封装类(无论是配置文件还是注解都不需要配置)
ViewResolver & View:视图解析器,解析具体的视图
Interceptors :拦截器,负责拦截我们定义的请求然后做处理工作(无论是配置文件方式还是注解都需要先创建再配置)
红色的是需要自己创建,黑色的需要配置。
1.4spring-mvc流程
2.spring-mvc的第一个例子
1. 创建一个web工程
2. 导入依赖包
3.创建springmvc的配置文件
配置中央控制
创建springmvc的核心配置文件
文件的命名规则:中央控制器(servlet的名称)的名称+“-servlet.xml”
默认位置:WEB-INF下
配置:controller和视图解析器
4. 创建controller
3 .三种handlerMapping
1. BeanNameUrlHandlerMapping (默认)
<!-- 按着controller的name来映射寻找controller,默认存在 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
2.SimpleUrlHandlerMapping
<!-- 使用简单url来映射 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello1.do">myController</prop>
</props>
</property>
</bean>
3.ControllerClassNameHandlerMapping
<!-- 控制类的类名控制器,访问时类名首字母需要小写 -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
4.几种控制器
ParameterizableViewController(参数控制器)
<bean name="/toIndex.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
<!-- 配置你所要跳转到视图的名称 -->
<property name="viewName"value="index"></property>
</bean>
- AbstractCommandController(命令控制器)
- FormController(表单控制器)
只支持post请求方式
表单控制器有简单的验证功能
如果提交失败返回表单页面,如果提交成功就跳转到成功页面
有收集表单数据的功能
日期类型转换
5 springmvc基于注解的开发
5.1注解第一个例子
创建web项目
在springmvc的配置文件中指定注解驱动,配置扫描器
@controller:标识当前类是控制层的一个具体的实现
@requestMapping:放在方法上面用来指定某个方法的路径,当它放在类上的时候相当于命名空间需要组合方法上的requestmapping来访问。
5.2注解方式参数
1.在方法中可以自己随意去定义方法的参数,如果方法的参数的名称与传入参数的name匹配就会自动接收,别且转换我们所定义的数据类型。如果参数列表里定义了自定义的类springmvc会给我们把匹配的参数手机起来并且组装成对象。
2. requestMapping里面的method的类型必须要与前台form的类型一致
3. 重定向:
6. 文件上传
引入jar包
配置视图解析器
写上传逻辑
/**
* model层的处理使用map
* desc:
* author:任亮
* mail:renliangjava@163.com
* qq群:2636378537
* @throws Exception
*/
@RequestMapping(value="/personForUpload.do",method=RequestMethod.POST)
public String personForUpload(HttpServletRequest request,Person person, Map<String,Object> map) throws Exception{
//第一步转化request
MultipartHttpServletRequest mr = (MultipartHttpServletRequest)request;
//获得上传的文件mr.getFile(String fileName),fileName是<input type="file" name="pic"><br>中pic
CommonsMultipartFile cf = (CommonsMultipartFile) mr.getFile("pic");
byte[] fb = cf.getBytes();
String fileName = "";
//设置时间戳格式
SimpleDateFormat af = new SimpleDateFormat("yyyyMMddhhmmssSSS");
//获得时间戳的字符串
fileName = af.format(new Date());
//加三位随机数
Random random = new Random();
for(int i = 0; i < 3; i++){
fileName = fileName + random.nextInt(10);
}
String path =request.getSession().getServletContext().getRealPath("/");
OutputStream out = new FileOutputStream(path+"/img/"+fileName+".jpg");
out.write(fb);
out.flush();
out.close();
map.put("person", person);
return "success";
}
7. 拦截器
8. Ssm整合
参见代码
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<!-- springmvc中央的转发器 -->
<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-servlet.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:beans.xml</param-value>
</context-param>
</web-app>
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
<!-- 注解扫描器 -->
<context:component-scan base-package="cn.itcast"/>
<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"value="com.mysql.jdbc.Driver"></property>
<property name="url"value="jdbc:mysql://127.0.0.1:3306/springmvc"></property>
<property name="username"value="root"></property>
<property name="password"value="root"></property>
</bean>
<bean id="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource"ref="dataSource"></property>
<property name="mappingDirectoryLocations">
<value>classpath:cn/itcast/hbm</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.Dialect">org.hibernate.dialect.MySQL5Dialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl">update</prop>
</props>
</property>
</bean>
<bean id="txManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"ref="sessionFactory"></property>
</bean>
<tx:advice id="txAdvice"transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*"propagation="REQUIRED"/>
<tx:method name="update*"propagation="REQUIRED"/>
<tx:method name="get*"propagation="NEVER" read-only="true"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:advisor advice-ref="txAdvice"pointcut="execution(* cn.itcast.service..*.*(..))"/>
</aop:config>
</beans>
04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s相关推荐
- spring文件上传拦截器及异常处理
1文件上传 当enctype="multipart/form-data"时request.getParameter()方法失效 单文件上传 导入坐标 <dependency& ...
- Spring MVC更多家族成员----文件上传---06
Spring MVC更多家族成员----文件上传---06 本节导读 文件上传与MultipartResolver 使用MultipartResolver进行文件上传的简单分析 StandardSer ...
- spring mvc 实现单文件 || 多文件上传
文件上传 1. pom依赖(jar包) 2. 文件上传解析器配置 3. 上传实现 4. 下载||文件展示实现(io流的实现) 项目下载地址 https://github.com/sevenyounga ...
- Spring MVC 学习总结(五)——校验与文件上传
目录 一.Spring MVC验证器Validator 1.1.定义验证器 1.2.执行校验 1.3.在UI中添加错误标签 1.4.测试运行 二.JSR303验证器 2.1.添加hibernate-v ...
- Spring MVC 学习总结(五)——校验与文件上传 转自 张果 博客;已经编程校验;正确无误;...
Spring MVC 学习总结(五)--校验与文件上传 目录 一.Spring MVC验证器Validator 1.1.定义验证器 1.2.执行校验 1.3.在UI中添加错误标签 1.4.测试运行 二 ...
- spring boot的单个文件多文件上传原理及使用
一.原理 自动配置原理 文件上传自动配置类-MultipartAutoConfiguration-MultipartProperties 自动配置好了 StandardServletMultipart ...
- bpmn 文件 服务器部署,Liferay7 BPM门户开发之45: 集成Activiti文件上传部署流程BPMN模型...
开发文件上传,部署流程模板. 首先,开发jsp页面,deploy.jsp ${RETURN_MESSAGE} 其中,上传form的action为portlet:actionURL,它的name就是在p ...
- 11月30在spring mvc中使用Validator框架和文件上传
首先回顾了spring mvc中的表单验证和业务逻辑校验失败后,回到表单页面中显示错误信息的整个内部运行流程. 表单校验出错后回到表单注册页面是由默认的SimpleFormController的pro ...
- Spring Mvc 数据回显、异常处理、文件上传、json交互、ResTful、拦截器的使用(高级三)
1,数据回显 SpringMvc包含三种数据回显机制 第一种:对于简单数据类型,如:Integer.String.Float等使用Model将传入的参数再放到request域实现显示. (回顾jsp四 ...
最新文章
- Redis持久化方法对比分析
- 业界首个!华为联合中国信通院等发布《网络体系强基展望白皮书》
- python详细安装教程3.8.3-Python下载 v3.8.3 官方中文版
- python map(function, iterable, ...) 内置函数的用法 (序列迭代调用并返回)
- 7.7-9 chage、chpasswd、su
- imp命令导入指定表_Oracle—— 导入/导出 数据:exp,imp 命令
- 计算机网络ppt_大学四年,我这样学操作系统和计算机网络,毕业后成为了别人眼中的大神(附书籍推荐)
- R 保存包含中文的 eps 图片--showtext
- org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.demo.pojo.IdCard
- 简易c语言编程软件,c语言开发工具下载
- lbochs模拟器最新版_手机模拟器电脑模拟器-bochs模拟器安卓版下载 v2.6.8-都去下载...
- 关于小凡模拟器设置完后找不到所要配置文件的问题
- Xshell 如何导入 PuTTYgen 生成的 key
- H.264码流分析器,雷霄骅版本人修改版
- 还不会用 Python 提取 PDF 表格?三种类型数据,轻松转换成 Excel
- python方法测试生男孩女孩_用什么方法可以测出怀的是男孩女孩?还有如何才能生儿子?...
- qurlinfo在qt5中_QT5编译使用QFtp的方法步骤
- 快过年了,Python实现12306查票以及自动购票....
- 怎么判断Ubuntu有没有无线网卡?
- 阿里云SLB实现负载均衡