springMVC学习

1.springMVC

相对于struts2优点,:rest风格和注解的实现更为方便

springMVC 响应大致流程

2. springMVC具体流程

在整个框架中,DispatcherServlet处于核心的位置,它负责协调和组织不同组件以完成请求处理并返回响应的工作
具体的处理流程:

1)整个过程始于客户端发出一个HTTP请求,Web应用服务器接收到这个请求,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),Web容器将该请求转交给DispatcherServlet处理。
2)DispatcherServlet接收到这个请求后,将根据请求的信息及HandlerMapping的配置找到处理请求的处理器(Handler)。注意:Spring MVC中并没有定义一个Handler接口,实际上任何一个Object都可以成为请求处理器。
3)当DispatcherServlet根据HandlerMapping得到对应当前请求的Handler后,通过HandlerAdapter对Handler进行封装,再以统一的适配器接口调用Handler。HandlerAdapter是Spring MVC的框架级接口,顾名思义,HandlerAdapter是一个适配器,它用统一的接口对各种Handler方法进行调用。
4)处理器完成业务逻辑的处理后将返回一个ModelAndView给DispatcherServlet,ModelAndView包含了视图逻辑名和模型数据信息。
5)ModelAndView中包含的是“逻辑视图名”而非真正的视图对象,DispatcherServlet借由ViewResolver完成逻辑视图名到真实视图对象的解析工作。
6)当得到真实的视图对象View后,DispatcherServlet就使用这个View对象对ModelAndView中的模型数据进行视图渲染。
最终客户端得到的响应消息


3. 实现controller的方式实现

b. 相应的springMVC配置
+

 <!-- 配置控制器 -->
    <bean name="/hello.do" class="com.dream.web.controller.HelloController"/>
    
    <!-- 配置视图渲染器 -->
	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
	    <!-- 将视图名 渲染后视图的前缀 -->
	    <property name="prefix" value="/WEB-INF/jsp/"/>
	    <!-- 渲染后视图的后缀 -->
	    <property name="suffix" value=".jsp"/>
	</bean>

c .配置之前要在web.xml里面进行配置dispacherServlet:

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

4. 注解实现:

编写请求处理器
Spring MVC通过一个@Controller注解即可将一个Controller的普通类转化为处理请求的控制器,通过@RequestMapping为控制器指定处理哪些URL的请求

首先,还是要配置springMVC的配置文件,使控制器和视图解析器等生效
配置文件名为:hello-servlet.xml

<context:component-scan base-package="com.dream.web.controller"/>
    
    <!-- 配置视图渲染器 -->
	<bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
	    <!-- 将视图名 渲染后视图的前缀 -->
	    <property name="prefix" value="/WEB-INF/jsp/"/>
	    <!-- 渲染后视图的后缀 -->
	    <property name="suffix" value=".jsp"/>
	</bean>

5. 转发和重定向的方式

第一种modelAndView进行:

第二种原生的:

第三种字符串


6. 数据处理

第一种是通过属性获取:

如果属性不一致,要加注解(RequestParam)

第二种是对象的方式进行获取:


7. 乱码问题的处理

a. spring方式进行处理,只能处理post

b. 修改tomcat上的配置

Tomcat设置URIEncoding="utf-8"

c. 进行配置编码过滤器进行处理乱码问题

如果不是通过request.getParamter方式进行获取,也就是说是通过springMVC的方式进行获取则要自己手动转换。也就是说自己做的过滤器只支持request进行获取数据。


8. 文件的上传
  1. 导入jar包
    com.springsource.org.apache.commons.fileupload-1.2.0.jar
    com.springsource.org.apache.commons.logging-1.1.1.jar
    com.springsource.org.apache.commons.io-1.4.0.jar

  2. 编写JSP页面

<form action="uploadFile.do" method="post" enctype="multipart/form-data">
		<input type="file" name="file"> 
		<input type="submit"><br>
	</form>
  1. 编写controller

  2. 设置上传解析器

<!-- 文件上传配置 -->
		<!-- 上传的解析器 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 设置编码格式 -->
		<property name="defaultEncoding" value="utf-8"></property>
		<!-- 设置文件大小 -->
		<property name="maxUploadSize" value="10"></property>
	</bean>
  1. 批量下载
原文地址:https://www.cnblogs.com/jwlxtf/p/8056519.html