标签:
这篇文章的目的是实现Struts2中一种形式(封装视图的逻辑名称),在Struts2中Action处理后会返回"SUCCESS"这样,然后根据"SUCCESS"跳转到相对应的Jsp页面,但是前一篇文章中直接配的是modelAndView.setViewName("/jsp/success.jsp");。所以这篇文章实现上面那个功能(封装视图的逻辑名称)。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
但是在实现这个功能之前,先讲另外一个扩展。
我们在上篇文章中写了一个入门小案例,其中在/WEB-INF下有一个DispatcherServlet-servlet.xml配置文件,那么我现在觉得DispatcherServlet-servlet.xml很难听,想换个名字,且想换个地方,不放在/WEB-INF下面了,想放在src目录下,怎么办?
第1步.把这个文件剪切到src下面。重命名为springmvc.xml.
第2步.我既然改了名字又换了地方。那我要让核心过滤器能找到这个问价才行啊,只要在web.xml中配置初始化参数就可以了。
在web.xml中修改如下。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>SpringMvc_10day_self</display-name> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 通知DispatcherServlet去指定目录下找到springmvc.xml配置文件 --> <!-- 注意这里的 <param-name>contextConfigLocation</param-name>一个字母都不能有错 一旦有错就会去WEB-INF下面去找 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
------------------------------------------------------------------------------------------------------------------------------------------------------------
好,言归正传,我们实现"SUCCESS"这个功能(现在封装视图的逻辑名称)。
第一步:修改HelloAction.java文件。如下
public class HelloAction implements Controller { /** * */ public HelloAction() { System.out.print("创建了一个Action"); } @Override public ModelAndView handleRequest(HttpServletRequest arg0,HttpServletResponse arg1) throws Exception { System.out.println("this is HelloAction handleRequest"); ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject("message","这是我得第一个SpringMvc应用程序"); //原来封装视图的真实路径 // modelAndView.setViewName("/jsp/success.jsp"); //现在封装视图的逻辑名称。什么是逻辑名称呢?就是Struts2中的"Success"这样的。 modelAndView.setViewName("success"); return modelAndView; } }
第二步:修改上面的由DispatcherServlet-servlet.xml修改过来的springmvc.xml。我们把springmvc.xml里面的内容拆来,各个功能模块单独配成xml配置文件。
具体做法如下:
总的案例结构图:
springmvc.xml是总的Springmvx配置文件。而位于springmvc_001.xml是分配置文件。总的springmvc.xml文件包含分的springmvc_001.xml配置文件。
总的springmvc_xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" > <import resource="com/guigu/shen/Action/springmvc_001.xml"/> </beans>
分的springmvc_001.xml配置文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" > <!-- 控制器(程序员)(必须配置) --> <bean name="/hello.action" class="com.guigu.shen.Action.HelloAction"></bean> <!-- 如果Action汇总书写的是视图逻辑名称,那么视图解析器就必须配置(解释一下什么是视图逻辑名称:就是类似Struts2中的,"success") 如果Action中配置的是视图真实名称,那么视图解析器就可选配置(解释一下什么是视图真实名称,就是"/jsp/success.jsp") --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 配置路径前缀 --> <property name="prefix" value="/jsp/"></property> <!-- 配置路径后缀 --> <property name="suffix" value=".jsp"></property> <!-- 上面的配置方法其实就是前缀+视图逻辑名+后缀=真实路径 --> </bean> </beans>
第三步:在urL中输入:http://127.0.0.1:8080/SpringMvc_10day_self/hello.action
运行结果:正确。
03SpringMvc_自定义的spring.xml配置文件和逻辑视图名
标签:
原文地址:http://www.cnblogs.com/shenxiaoquan/p/5744855.html