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. 文件的上传
-
导入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 -
编写JSP页面
<form action="uploadFile.do" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit"><br>
</form>
-
编写controller
-
设置上传解析器
<!-- 文件上传配置 -->
<!-- 上传的解析器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置编码格式 -->
<property name="defaultEncoding" value="utf-8"></property>
<!-- 设置文件大小 -->
<property name="maxUploadSize" value="10"></property>
</bean>
- 批量下载