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>
 
 
 

SpringMVC基础教程的更多相关文章

  1. Shiro 基础教程

    原文地址:Shiro 基础教程 博客地址:http://www.extlight.com 一.前言 Apache Shiro 是 Java 的一个安全框架.功能强大,使用简单的Java安全框架,它为开 ...

  2. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  3. Dubbo 基础教程

    原文地址:Dubbo 基础教程 博客地址:http://www.extlight.com 一.前言 当服务越来越多时,容量的评估,小服务资源的浪费等问题逐渐显现,此时需要增加一个调度中心基于访问压力实 ...

  4. SpringCloud基础教程学习记录

    这个学习记录是学习自翟永超前辈的SpringCloud的基础教程. 自己写这个教程的目的主要是在于,想要更凝练总结一些其中的一些实用点,顺便做个汇总,这样自己在复习查看的时候更加方便,也能顺着自己的思 ...

  5. matlab基础教程——根据Andrew Ng的machine learning整理

    matlab基础教程--根据Andrew Ng的machine learning整理 基本运算 算数运算 逻辑运算 格式化输出 小数位全局修改 向量和矩阵运算 矩阵操作 申明一个矩阵或向量 快速建立一 ...

  6. springMVC基础controller类

    此文章是基于 搭建SpringMVC+Spring+Hibernate平台 功能:设置请求.响应对象:session.cookie操作:ajax访问返回json数据: 创建springMVC基础con ...

  7. <<Bootstrap基础教程>> 新书出手,有心栽花花不开,无心插柳柳成荫

    并非闲的蛋疼,做技术也经常喜欢蛋疼,纠结于各种技术,各种需求变更,还有一个很苦恼的就是UI总是那么不尽人意.前不久自己开源了自己做了多年的仓储项目(开源地址:https://github.com/he ...

  8. Memcache教程 Memcache零基础教程

    Memcache是什么 Memcache是danga.com的一个项目,来分担数据库的压力. 它可以应对任意多个连接,使用非阻塞的网络IO.由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash ...

  9. Selenium IDE 基础教程

    Selenium IDE 基础教程 1.下载安装     a 在火狐浏览其中搜索附件组件,查找 Selenium IDE     b 下载安装,然后重启firefox 2.界面讲解      在菜单- ...

随机推荐

  1. .net文件夹上传源码

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  2. 线段树初步——转载自ljc20020730

    线段树初步   线段树模板1:https://www.luogu.org/problem/show?pid=3372 线段树模板2:https://www.luogu.org/problem/show ...

  3. 灰度图像--图像增强 非锐化掩蔽 (Unsharpening Mask)

    学习DIP第35天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...

  4. Latex里面的\newtheorem*{xx}{yy}后面的*是干什么的?

    答案: 加了*表示不标号.例如: 同样使用命令: \begin{prb} xx\end{prb} 1. \newtheorem{prb}{Problem Formulation} → Problem ...

  5. Java并发编程(十一)——原子操作CAS

    一.原子操作 syn基于阻塞的锁的机制,1.被阻塞的线程优先级很高,2.拿到锁的线程一直不释放锁怎么办?3.大量的竞争,消耗cpu,同时带来死锁或者其他安全. CAS的原理 CAS(Compare A ...

  6. JSON 转含有泛型属性的对象

    在将 json 字符串转为对象时,如果对象含有泛型,在进行转换时需要指明泛型类型. 1. 对象只含有一个泛型属性时 1.1  代码 /** * @Describe: * @Author: chenfa ...

  7. LeetCode 470. 用 Rand7() 实现 Rand10()(Implement Rand10() Using Rand7())

    题目描述 已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数. 不要使用系统的 Math.random() 方法. 示 ...

  8. swift 高级模式匹配 if case

    let age = 22 let sex = "girl" if (sex == "girl" && age >= 18 &&am ...

  9. MessageBox 弹框

    模拟系统的消息提示框而实现的一套模态对话框组件,用于消息提示.确认消息和提交内容.  从场景上说,MessageBox 的作用是美化系统自带的 alert.confirm 和 prompt,因此适合展 ...

  10. 判断对象当中有没有某一个属性(AS,JS,Java语言比较)

    1.AS 首先说说AS里面如何判断,AS现在很少用这个语言了,当时我们公司的项目当中还有,所以就拿出来一块比较一下,代码如下: //利用Object属性判断 if("name" i ...