zoukankan      html  css  js  c++  java
  • SpringMVC基础教程

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

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

     1 <!-- 配置SpringMVC -->
     2  <servlet>
     3    <servlet-name>springMVC</servlet-name>
     4    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     5    <load-on-startup>1</load-on-startup>
     6  </servlet>
     7  
     8  <servlet-mapping>
     9    <servlet-name>springMVC</servlet-name>
    10    <url-pattern>/</url-pattern>
    11  </servlet-mapping>
    第二种方式:文件位置随意放、或者名字不为springMVC-servlet.xml
    在web.xml配置如下即可:
     1 <!-- 配置SpringMVC -->
     2 <servlet>
     3   <servlet-name>springMVC</servlet-name>
     4   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     5   <init-param>
     6         <!-- 加载SpringMVC的xml到 spring的上下文容器中 -->
     7         <param-name>contextConfigLocation</param-name>
     8         <param-value>classpath:applicationContext-servlet.xml</param-value>
     9         </init-param>
    10   <load-on-startup>1</load-on-startup>
    11  </servlet>
    12  
    13  <servlet-mapping>
    14     <servlet-name>springMVC</servlet-name>
    15     <url-pattern>/</url-pattern>
    16  </servlet-mapping>
    二者方式的区别只是在于springmvc有自带的加载路径和文件名,当然一般我们会采取第二种,方便我们自己的命名以及文件放置。
     
    2.配置springMVC-servlet.xml使得我们可以根据URL的结尾进行返回对应的返回值,例如list.json,list.xml
     
     1 <!-- 根据客户端的不同的请求决定不同的view进行响应, 如 /blog/1.json /blog/1.xml -->
     2  <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
     3      <property name="order" value="1" />
     4      <!-- 在没有扩展名时即: "/blog/1" 时的默认展现形式 -->
     5   <property name="defaultContentType" value="text/html" />
     6   <!-- 是否启用扩展名支持,默认就是true -->
     7   <property name="favorPathExtension" value="true"></property>
     8  
     9   <!-- 设置为true以忽略对Accept Header的支持 -->
    10   <property name="ignoreAcceptHeader" value="true" />
    11   <!-- 用于开启 /blog/123?format=json 的支持,一旦开启就要加format参数 -->
    12   <property name="favorParameter" value="false" />
    13  
    14   <!-- 扩展名至mimeType的映射,即 /blog.json => application/json -->
    15   <property name="mediaTypes">
    16    <map>
    17     <entry key="xml" value="application/xml" />
    18     <entry key="json" value="application/json" />
    19    </map>
    20   </property>
    21  
    22   <property name="defaultViews">
    23    <list>
    24     <!-- for application/json -->
    25     <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
    26    
    27     <!-- for application/xml -->
    28     <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
    29      <property name="marshaller">
    30       <bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
    31      </property>
    32     </bean>
    33    </list>
    34   </property>
    35  </bean>
    值得要注意的是,你的springmvc中必须要配置
    1 <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    2   <property name="order" value="2" />
    3   <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    4   <property name="prefix" value="/"></property>
    5   <property name="suffix" value=".jsp"></property>
    6  </bean>
    这样配置了以后,能保证的有一点,当用户输入的结尾不存在的时候会默认使用text/html来进行处理,也就是网页处理,因为会自动跳到viewResolver中
     
    在代码块中建议如下处理:
     1  @RequestMapping(value="/getById",method=RequestMethod.GET)
     2  public ModelAndView getById(Model model, HttpServletRequest request){
     3  
     4   User user = new User();
     5   user.setUsername("aaa");
     6   user.setPassword("bbb");
     7  
     8   Map<String, Object> map = new HashMap<String, Object>();
     9   map.put("row", user);
    10   return new ModelAndView("getById", map);
    11  }
    解释:这样的目的在于,如果请求的是单纯的action会跳转到getById.jsp中,如果是其他的结尾会自动转为相应的数据格式
     
    3.统一异常处理
     1 <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
     2      <property name="defaultErrorView" value="error500"></property>
     3      <property name="defaultStatusCode" value="500"></property>
     4      <property name="statusCodes">
     5          <props>
     6              <prop key="error500">500</prop> <!-- error.jsp -->
     7              <prop key="error404">404</prop> <!-- error1.jsp -->
     8          </props>
     9      </property>
    10      <property name="exceptionMappings">
    11          <props>
    12              <!-- 这里你可以根据需要定义N多个错误异常转发 -->
    13              <!-- 数据库错误(dbError.jsp) -->
    14              <prop key="java.sql.SQLException">dbError</prop>
    15              <!-- 参数绑定错误(如:必须参数没传递)(bizError.jsp) -->
    16              <prop key="org.springframework.web.bind.ServletRequestBindingException">bizError</prop>
    17              <!-- 参数错误(bizError.jsp) -->
    18              <prop key="java.lang.IllegalArgumentException">bizError</prop>
    19              <!-- 参数类型有误(bizError.jsp) -->
    20              <prop key="org.springframework.validation.BindException">bizError</prop>
    21              <!-- 其他错误为'未定义错误'(unknowError.jsp) -->
    22              <prop key="java.lang.Exception">unknowError</prop>
    23          </props>
    24      </property>
    25  </bean>
     
    其次要在web.xml中配置
    1 <error-page>
    2   <error-code>500</error-code>
    3   <location>/error500.jsp</location>
    4  </error-page>
    5  
    6  <error-page>
    7   <error-code>404</error-code>
    8   <location>/error404.jsp</location>
    9  </error-page>

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

     
    4.数据格式化
     1 <!-- 配置默认的注解映射 -->
     2  <mvc:annotation-driven>
     3      <mvc:message-converters>
     4          <ref bean="stringHttpMessageConverter" />
     5             <ref bean="fastJsonHttpMessageConverter" />
     6      </mvc:message-converters>
     7  </mvc:annotation-driven>
     8  
     9  <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
    10         <!-- 避免出现乱码 -->
    11         <property name="supportedMediaTypes">
    12             <list>
    13                 <value>text/plain;charSet=UTF-8</value>
    14             </list>
    15         </property>
    16     </bean>
    17    
    18  <bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
    19         <property name="supportedMediaTypes">
    20             <list>
    21                 <value>application/json;charset=UTF-8</value>
    22                 <value>text/html;charset=UTF-8</value><!-- 避免IE出现下载JSON文件的情况 -->
    23             </list>
    24         </property>
    25         <property name="features">
    26             <util:list>
    27                 <value>WriteMapNullValue</value>
    28                 <value>QuoteFieldNames</value>
    29                 <value>WriteDateUseDateFormat</value>
    30             </util:list>
    31         </property>
    32     </bean>
     
     
     
  • 相关阅读:
    Android WelcomeActivity 启动画更换网络图片
    Android 手机号码格式验证
    Android 身份证号码查询、手机号码查询、天气查询
    Android Http请求框架一:Get 和 Post 请求
    自定义带进度条的WebView , 增加获取web标题和url 回掉
    JavaScript之正則表達式入门
    Spring之WEB模块
    【VBA研究】浮点数计算总是有误差的
    CSDN日报20170403 ——《该不该离职?它说了算!》
    怎样清除浏览器缓存?
  • 原文地址:https://www.cnblogs.com/Nonnetta/p/5060758.html
Copyright © 2011-2022 走看看