04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s



1.
Spring-mvc介绍

1.1市面上流行的框架

  • Struts2(比较多)
  • Springmvc(比较多而且属于上升的趋势)
  • Struts1(即将被淘汰)
  • 其他

1.2  spring-mvc结构

  1.  DispatcherServlet:中央控制器,把请求给转发到具体的控制类
  1. Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置)
  2. handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略
  3. ModelAndView:服务层返回的数据和视图层的封装类(无论是配置文件还是注解都不需要配置)
  4. ViewResolver  & View:视图解析器,解析具体的视图
  5. 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.几种控制器

  1. ParameterizableViewController(参数控制器)

     

<bean
name="/toIndex.do"
class="org.springframework.web.servlet.mvc.ParameterizableViewController">

     
<!--
配置你所要跳转到视图的名称 -->

     
<property
name="viewName"value="index"></property>

</bean>

 AbstractCommandController(命令控制器)

 

 FormController(表单控制器)

  1. 只支持post请求方式
  2. 表单控制器有简单的验证功能
  3. 如果提交失败返回表单页面,如果提交成功就跳转到成功页面
  4. 有收集表单数据的功能
  5. 日期类型转换

5 springmvc基于注解的开发

5.1注解第一个例子

  1. 创建web项目
  2. 在springmvc的配置文件中指定注解驱动,配置扫描器
  3. @controller:标识当前类是控制层的一个具体的实现
  4. @requestMapping:放在方法上面用来指定某个方法的路径,当它放在类上的时候相当于命名空间需要组合方法上的requestmapping来访问。

5.2注解方式参数

1.在方法中可以自己随意去定义方法的参数,如果方法的参数的名称与传入参数的name匹配就会自动接收,别且转换我们所定义的数据类型。如果参数列表里定义了自定义的类springmvc会给我们把匹配的参数手机起来并且组装成对象。

2. requestMapping里面的method的类型必须要与前台form的类型一致

3.
重定向:

6.
文件上传

  1. 引入jar包
  2. 配置视图解析器
  1. 写上传逻辑

 

/**

  
 * 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>

 

时间: 2024-08-02 03:34:42

04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s的相关文章

Spring MVC文件上传

1.加入JAR 由于SpringMVC使用的是commons-fileupload实现,所以除了之前使用到的Spring MVC用到的一些JAR外,还需要下面两个JAR: commons-fileupload-x.x.x.jar和commons-io-x.x.x.jar. 2.配置MultipartResolver处理器(mvc-servlet.xml) <!-- 设置MultipartResolver用以文件上传 --> <!-- p:defaultEncoding请求的编码格式,必须

Spring MVC 多文件上传大小限制及异常处理

Spring MVC  多文件上传大小限制及异常处理 (包括 MaxUploadSizeExceededException 异常) 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 补充如下: h

基于Spring Mvc实现的Excel文件上传下载

最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring mvc的项目如何搭建,传送门在这里. 这次就基于这个工程,继续实现上传下载的小例子.需要做下面的事情: 1 增加index.html,添加form提交文件 2 引入commons-fileupload.commons-io.jxl等工具包 3 创建upload download接口 4 注入mul

java-spring mvc 文件上传 找不到jar包,已知的都添加了,大神来看看

问题描述 spring mvc 文件上传 找不到jar包,已知的都添加了,大神来看看 ! 解决方案 没有build到项目中把jar包,你只是直接把jar粘到了lib目录下 解决方案二: 上面有句话是这样说的··········java .lang.NoClassFounderror: org/apache/commns/fileupload/FileItemfactory 我个人认为是这个jar包里没有哪个类里所请求的FileItemfactory 来提供创建文件工厂对象 解决方案三: 错误信息

刚刚做了个文件上传功能,拿来分享一下!(MVC架构及传统架构通用)

文件上传无论在软件还是在网站上都十分常见,我今天再把它拿出来,讲一下,主要讲一下它的设计思想和实现技术,为了它的通用性,我把它做在了WEB.Service项目里,即它是针对服务器的,它的结构是关联UI(WEB)层与Service层(BLL)的桥梁. 结构 上传基类: 上传文件的接口规范:     接口的实现: UI层调用WEB.Service层的上传功能:(附代码) public class FileUploadController : Controller { WEB.Services.IFi

Spring 文件上传功能

本篇文章,我们要来做一个Spring的文件上传功能: 1. 创建一个Maven的web工程,然后配置pom.xml文件,增加依赖: 1 2 3 4 5 <dependency>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-web</artifactId>     <version>1.0.2.RELEASE<

asp net mvc 上传-asp.net mvc文件上传问题,新手求解答!

问题描述 asp.net mvc文件上传问题,新手求解答! asp.net mvc文件上传问题,新手求解答!

Struts2+spring+mybatis上传图片获取不到文件上传名字

问题描述 Struts2+spring+mybatis上传图片获取不到文件上传名字 java /** * * 图片上传 * */ public String doupload() { MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext()); MultipartHttpServletRequest multipartRequest = resolver.r

Spring中实现文件上传

实现图片上传  用户必须能够上传图片,因此需要文件上传的功能.比较常见的文件上传组件有Commons FileUpload(http://jakarta.apache.org/commons/fileupload/a>)和COS FileUpload(http://www.servlets.com/cos),Spring已经完全集成了这两种组件,这里我们选择Commons FileUpload.  由于Post一个包含文件上传的Form会以multipart/form-data请求发送给服务器,