1. 最简单的配置
首先是要有相应的配置文件:
文件内容:
  <context:component-scan base-package="com.imethsoft.server.*" />
<!-- 开启注解 -->
<mvc:annotation-driven /> <!-- 静态资源(js/image)的访问 -->
<mvc:resources mapping="/images/**" location="/images/" cache-period="31556926" />
<mvc:resources mapping="/js/**" location="/js/" cache-period="31556926" />
<mvc:resources mapping="/css/**" location="/css/" cache-period="31556926" /> <!-- 定义视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>

在web.xml配置如下即可:第一种方式:文件放在WEB-INF下面,取名为springMVC-servlet.xml

 <!-- 配置SpringMVC -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
第二种方式:文件位置随意放、或者名字不为springMVC-servlet.xml
在web.xml配置如下即可:
 <!-- 配置SpringMVC -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!-- 加载SpringMVC的xml到 spring的上下文容器中 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
二者方式的区别只是在于springmvc有自带的加载路径和文件名,当然一般我们会采取第二种,方便我们自己的命名以及文件放置。

 
2.配置springMVC-servlet.xml使得我们可以根据URL的结尾进行返回对应的返回值,例如list.json,list.xml
 
 <!-- 根据客户端的不同的请求决定不同的view进行响应, 如 /blog/1.json /blog/1.xml -->
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<!-- 在没有扩展名时即: "/blog/1" 时的默认展现形式 -->
<property name="defaultContentType" value="text/html" />
<!-- 是否启用扩展名支持,默认就是true -->
<property name="favorPathExtension" value="true"></property> <!-- 设置为true以忽略对Accept Header的支持 -->
<property name="ignoreAcceptHeader" value="true" />
<!-- 用于开启 /blog/123?format=json 的支持,一旦开启就要加format参数 -->
<property name="favorParameter" value="false" /> <!-- 扩展名至mimeType的映射,即 /blog.json => application/json -->
<property name="mediaTypes">
<map>
<entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
</map>
</property> <property name="defaultViews">
<list>
<!-- for application/json -->
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" /> <!-- for application/xml -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
</property>
</bean>
</list>
</property>
</bean>
值得要注意的是,你的springmvc中必须要配置
 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="order" value="2" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
这样配置了以后,能保证的有一点,当用户输入的结尾不存在的时候会默认使用text/html来进行处理,也就是网页处理,因为会自动跳到viewResolver中
 
在代码块中建议如下处理:
  @RequestMapping(value="/getById",method=RequestMethod.GET)
public ModelAndView getById(Model model, HttpServletRequest request){ User user = new User();
user.setUsername("aaa");
user.setPassword("bbb"); Map<String, Object> map = new HashMap<String, Object>();
map.put("row", user);
return new ModelAndView("getById", map);
}
解释:这样的目的在于,如果请求的是单纯的action会跳转到getById.jsp中,如果是其他的结尾会自动转为相应的数据格式
 
3.统一异常处理
 <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="error500"></property>
<property name="defaultStatusCode" value="500"></property>
<property name="statusCodes">
<props>
<prop key="error500">500</prop> <!-- error.jsp -->
<prop key="error404">404</prop> <!-- error1.jsp -->
</props>
</property>
<property name="exceptionMappings">
<props>
<!-- 这里你可以根据需要定义N多个错误异常转发 -->
<!-- 数据库错误(dbError.jsp) -->
<prop key="java.sql.SQLException">dbError</prop>
<!-- 参数绑定错误(如:必须参数没传递)(bizError.jsp) -->
<prop key="org.springframework.web.bind.ServletRequestBindingException">bizError</prop>
<!-- 参数错误(bizError.jsp) -->
<prop key="java.lang.IllegalArgumentException">bizError</prop>
<!-- 参数类型有误(bizError.jsp) -->
<prop key="org.springframework.validation.BindException">bizError</prop>
<!-- 其他错误为'未定义错误'(unknowError.jsp) -->
<prop key="java.lang.Exception">unknowError</prop>
</props>
</property>
</bean>
 
其次要在web.xml中配置
 <error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page> <error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>

这样可以保证在springmvc没有拦截到的时候可以跳转到web.xml中进行拦截错误处理

 
4.数据格式化
 <!-- 配置默认的注解映射 -->
<mvc:annotation-driven>
<mvc:message-converters>
<ref bean="stringHttpMessageConverter" />
<ref bean="fastJsonHttpMessageConverter" />
</mvc:message-converters>
</mvc:annotation-driven> <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
<!-- 避免出现乱码 -->
<property name="supportedMediaTypes">
<list>
<value>text/plain;charSet=UTF-8</value>
</list>
</property>
</bean> <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value><!-- 避免IE出现下载JSON文件的情况 -->
</list>
</property>
<property name="features">
<util:list>
<value>WriteMapNullValue</value>
<value>QuoteFieldNames</value>
<value>WriteDateUseDateFormat</value>
</util:list>
</property>
</bean>
 
 
 

最新文章

  1. Android Fragment (二) 实例2
  2. 第一天接触Orchard
  3. 您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧
  4. 头文件 string.h cstring string 区别
  5. 讲解Canvas中的一些重要方法
  6. 简单几何(直线位置) POJ 1269 Intersecting Lines
  7. 什么是EBC和EBO
  8. SqlSever基础 dateadd year,增加五年
  9. buildroot linux filesystem 初探
  10. WCF学习笔记 -- 如何用C#开发一个WebService
  11. 捉虫记2:windows程序句柄泄露的上下文环境
  12. Spring事务-三种实现方式
  13. javaScrip中的“?”
  14. ubuntu 安装Opencv2.4.7
  15. 20155312 张竞予 Exp 8 Web基础
  16. 转 Java虚拟机5:Java垃圾回收(GC)机制详解
  17. IDEA使用SpringBoot 、maven创建微服务的简单过程
  18. 黑马java课程2222
  19. Shell脚本编写及常见面试题
  20. BigDecimal四舍五入保留两位小数

热门文章

  1. Malloc Maleficarum复盘
  2. JVM(六),java内存模型
  3. java+HTML5实现断点续传
  4. 洛谷比赛 U5442 买(最长链)
  5. bzoj3990
  6. Remainder Problem
  7. react搭建项目
  8. Git客户端执行命令报错: fatal: Authentication failed for&#39;xxxxx.git&#39;,但是又不弹出窗口重新输入用户名和密码的解决办法
  9. [心得]暑假DAY 5
  10. 已知源目录路径sourceFilePath,此目录下还有多级子目录和多个文本文件(*.txt)。尝试编写一个方法,将此目录下所有的文件拷贝至另一个目录targetFilePath,并其中的文本文件修改成SQL文件(*.SQL)。