基于spring mvc下请求的简单工作流程及其相应配置集成

来源:互联网 发布:淘宝的竖向分类怎么弄 编辑:程序博客网 时间:2024/05/22 16:38

1.读本文前需要了解的知识点:

1.RESTful 风格 :http://www.cnblogs.com/chinajava/p/5871305.html

2.Servlet 是什么:http://blog.csdn.net/honghailiang888/article/details/50585475

3.Filter 是什么:http://blog.csdn.net/honghailiang888/article/details/52994058

4.xml常用标签说明:http://blog.csdn.net/dwj901125/article/details/9070121

2.本文参考文章:http://jinnianshilongnian.iteye.com/blog/1594806

3.请求流程
1. 一般用户发送请求至web容器,然后根据url路径映射到前端控制器DispatcherServlet
2. 经过过滤器,从而决定进入到相应的哪一个控制器类
3.控制器进行相应的操作,返回给模板引擎(视图解析器)进行相应的操作

4.spring相关配置
1.分发器采用spring默认的

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

2.视图解析器配置,以jsp为例

    <bean        class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="viewClass"            value="org.springframework.web.servlet.view.JstlView" />        <property name="order" value="256" />        <property name="prefix" value="/views/"></property>        <property name="suffix" value=".jsp"></property>    </bean>

3.常见的过滤器配置

1.乱码过滤器(推荐放在过滤器链的第一个)

<filter>    <filter-name>characterEncodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>        <init-param>            <param-name>encoding</param-name>            <param-value>UTF-8</param-value>        </init-param></filter><filter-mapping>    <filter-name>characterEncodingFilter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>

2.文件过滤bean器(因为有时候,我们需要上传文件,比如图片等)

定义bean,调用spring自带的解析

<bean id="commonsMultipartResolver"        class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />

自定义的文件过滤器,这样做的好处在于,可以有效拦截上传文件的请求,对于上传文件的操作进行统一处理,然后执行逻辑层的操作.

public class ShiroFileFilter implements Filter {    @Override    public void destroy() {    }    @Override    public void doFilter(ServletRequest req, ServletResponse rep, FilterChain fileter)            throws IOException, ServletException {        if (req instanceof MultipartHttpServletRequest) {            // 在此处上传文件            CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();            req = commonsMultipartResolver.resolveMultipart((HttpServletRequest) req);            // 自定义操作        }        doFilter(req, rep, fileter);    }    @Override    public void init(FilterConfig arg0) throws ServletException {    }}

4.为静态资源文件配置servlet(防止设置相应过滤器后,对静态资源请求进行拦截).但是对于静态资源请求,如果用到了分布式,推荐使用nginx访问静态资源请求,因为有gzip压缩处理

    <servlet-mapping>        <servlet-name>default</servlet-name>        <url-pattern>*.jpg</url-pattern>        <url-pattern>*.js</url-pattern>        <url-pattern>*.css</url-pattern>        <url-pattern>*.png</url-pattern>        <url-pattern>*.gif</url-pattern>        <url-pattern>*.json</url-pattern>        <url-pattern>*.swf</url-pattern>        <url-pattern>*..map</url-pattern>    </servlet-mapping>
原创粉丝点击