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>

  1.  AbstractCommandController(命令控制器)

 

  1.  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:[email protected]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-09-30 06:45:03

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

Spring MVC文件上传和下载

在Spring MVC中有两种实现上传文件的办法,第一种是Servlet3.0以下的版本通过commons-fileupload与commons-io完成的通用上传,第二种是Servlet3.0以上的版本的Spring内置标准上传,不需借助第3方组件.通用上传也兼容Servlet3.0以上的版本 Servlet3.0以下的通过commons-fileupload上传 1.添加上传依赖包 一个是文件上传的jar包,一个是其所依赖的IO包.这两个jar包,均在Spring支持库的org.apache

spring mvc利用MultipartResolver解析Multipart/form-data进行文件上传

之前的表单数据都是文本数据,现记录:利用MultipartResolver进行文件上传. ①首先,需引入commons-fileUpload和commons-io jar包,pom.xml文件的坐标: <properties>      <spring.version>3.2.1.RELEASE</spring.version>  </properties>  <dependencies>          <dependency> 

spring实现文件上传(图片解析)

合抱之木,生于毫末,千里之行,始于足下,要想了解spring的文件上传功能,首先要知道spring是通过流的方式将文件进行解析,然后上传.那么是不是所有需要用的文件上传的地方都要写一遍文件解析器呢? 放心,spring这个大管家已经为我们做好了一切! 我们只需要在spring的配置文件中加入下面代码: <!-- 文件上传解析器 --> <bean id="multipartResolver" class="org.springframework.web.mu

Spring MVC 4使用Servlet 3 MultiPartConfigElement实现文件上传(带源码)

[本系列其他教程正在陆续翻译中,点击分类:spring 4 mvc 进行查看.源码下载地址在文章末尾.] [翻译 by 明明如月 QQ 605283073] 原文地址:http://websystique.com/springmvc/spring-mvc-4-file-upload-example-using-multipartconfigelement/ 上一篇:Spring MVC 4 使用常规的fileupload上传文件(带源码) 下一篇:Spring MVC 4 文件下载实例(带源码)

Spring 4 官方文档学习(十一)Web MVC 框架之multipart(文件上传)支持

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-multipart 1.简介 Spring内置的multipart支持会处理web应用中的文件上传.你可以启用该支持 -- 通过可插拔的MultipartResolver对象们,它们都是定义在 org.springframework.web.multipart 包中.Spring提供了一个MultipartResolver实

spring mvc中的文件上传

使用commons-fileupload上传文件所需要的架包有:commons-fileupload 和common-io两个架包支持,可以到Apache官网下砸. 在配置文件spring-mvc.xml中配置上传: <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> //文件上传最大是多少 <

spring mvc文件上传

1.配置spring mvc配置文件 <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" valu

Spring mvc文件上传与下载

文件上传 SpringMVC实现文件上传,需要再添加两个jar包.一个是文件上传的jar包,一个是其所依赖的IO包.这两个jar包,均在Spring支持库的org.apache.commons中. 单文件上传 jsp页面 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextP

Spring MVC使用commons fileupload实现文件上传功能

通过Maven建立Spring MVC项目,引入了Spring相关jar依赖. 1.为了使用commons fileupload组件,需要在pom.xml中添加依赖: <properties> <spring.version>3.0.7.RELEASE </spring.version> <junit.version>3.8.1</junit.version> <fileupload.version>1.2.2</fileupl