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

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 进行测试,得到结果:

 

联系作者


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御前两把刀刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值