您的位置:首页 > 编程语言 > Java开发

spring mvc基础篇(二):初识视图解析器,核心配置文件的位置,乱码处理

2017-03-06 23:31 639 查看
2.1 视图技术简介

通常像spring mvc 这样的web框架都会有相应的定位视图技术,spring提供了视图解析器来解析ModelAndView模型数据到特定的视图上,spring提供了ViewResolver和View两个特别重要的接口,ViewResolver提供了从视图名称到实际视图的映射,View处理请求的准备的工作,并将该请求提交给某种具体的视图解析器。

 

2.2 开发环境

开发工具:myeclipse8.6.1

数据库:mysql5.5.23

服务器: tomcat6.0.37

框架版本: spring3.2.2

 

2.3 案例开发步骤

步骤一:在myeclipse8.6中新建web工程springmvc02,拷贝如下包到lib目下:



 

步骤二:编写web.xml 配置文件,代码如下:

=================================web.xml========================

<?xmlversion="1.0" encoding="UTF-8"?>

<web-appversion="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 

<!-- 配置spring的字符集过滤 -->
  <filter>
    <filter-name>encode</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>
    <init-param>
         <param-name>forceEncoding</param-name>
         <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encode</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

<servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>

org.springframework.web.servlet.DispatcherServlet

</servlet-class>

<init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:configs/mymvc.xml</param-value>
</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>springmvc</servlet-name>

<url-pattern>*.do</url-pattern>

</servlet-mapping>

</web-app>

================================================================

知识讲解:<init-param>是用来配置springmvc核心配置文件的位置(如果我们不想让它在默认路径下的话),这时候,它就可以放到项目的src目录下,如图所示:



这时候就不用放到web-inf路径下了。那么,有同学会问了:<param-name>contextConfigLocation</param-name>这个里面的contextConfigLocation可以不可以随便乱写,当然不可以啦。前面提到过DispatcherServlet还与spring
的IOC容器完全集成在一起,从而可以更好地使用spring 的其它功能。这时就用到spring的依赖注入功能:根据contextConfigLocation把路径注入到DispatcherServlet中以供解析。我们可以从它的源码里面找到依赖注入的蛛丝马迹,如下图所示:



 
DispatcherServlet继承自FrameworkServlet,继续打开FrameworkServlet的源码,可以找到真相:

 


在上面还可以找到定义【private String contextConfigLocation;】,这是不是我们spring里面学的典型的依赖注入?!
 
对字符乱码处理的讲解:<filter>到<filter-mapping>的这一段都是为了处理post请求的中文乱码问题的。对于get请求,建议大家用字符串转码的方式,因为这种情况不是很多,
当然我们也可以编写过滤器的方式集中解决。字符串转码的方式:
userName=new String(userName.getBytes("iso-8859-1"),"utf-8");
 
步骤三:建立Login.jsp,如下所示:
=========================Login.jsp===================================
<body>
<divid="show">
<formaction="login.do"method="post">
    <tableborder="1px"cellpadding="0">
       <tr><td>请输入用户名:</td>
<td><inputtype="text"name="userName"/></td></tr>
       <tr><td>请输入密码:</td>
<td><inputtype="password"name="passWord"/></td></tr>
       <tr><tdcolspan="2">
<inputtype="submit"value="提交"/></td></tr>
    </table>
</form>
</div>
</body>
=====================================================================
 
步骤四:在核心配置文件mymvc.xml里面完善如下配置
================================mymvc.xml==========================
<beans>
<beanid="simpleUrlMapping"  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
         <propertyname="mappings">
            <props>
                <propkey="/login.do">loginControl</prop>
            </props>
         </property>
    </bean>
   
    <bean id="resourceView"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <propertyname="prefix"value="/pages/"></property>
       <propertyname="suffix"value=".jsp"></property>
    </bean>
    <bean id="loginControl"  class="com.wx.controls.LoginControl"></bean>
</beans>
====================================================================
知识讲解:【<beanid="resourceView">】这段是配置一个视图解析器,有上面好处呢?跟第一案例相比,它提供了一个视图定位的功能。例如我们控制器里面返回的是”index”,那么它能自动定位到/pages/index.jsp,也就是说自动加上了前缀和后缀。Prefix表示前缀,suffix表示后缀。
 
步骤五:在com.wx.controls包下面编写控制器LoginControl.java,如下:
==========================LoginControl.java==========================
public
class
LoginControlimplements Controller {
    public ModelAndView handleRequest(HttpServletRequest request,
           HttpServletResponseresponse) throws Exception {
       String userName=request.getParameter("userName");
       ModelAndView mav = new ModelAndView("ShowUser");
       mav.addObject("userStr", userName);
       return mav;
    }
}
==================================================================
 
步骤六:在webroot目录下建立目录pages,然后在里面建立ShowUser.jsp
================================ShowUser.jsp=======================
<body>
<h1>欢迎您:${requestScope.userStr}</h1>
</body>
==================================================================
步骤七: 启动tomcat,发布项目,在地址栏输入 http://localhost:8080/springmvc02/Login.jsp 进行测试,得到结果:

 


联系作者

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: