springmvc方法名称解析器和视图解析器

来源:互联网 发布:怎样开淘宝店教程视频 编辑:程序博客网 时间:2024/06/08 06:47
其中的组件: 
1,前端控制器DispatcherServlet(不需要程序员开发) 
作用是接收请求,响应结果,相当于转发器 
2,处理器映射器HandlerMapping(不需要程序员开发) 
作用:根据请求的url查找handler 
3,处理器适配器HandleAdapter 
作用:按照特定规则去执行Handler 
注意:编写Handler时要按照HandlerAdapter的要求去做 ,这样适配器才可以去正确执行Handler 
4,视图解析器View resolver(不需要程序员开发) 
作用:进行视图解析,根据逻辑视图名解析真正的视图(view) 
5、视图View(需要程序员开发jsp) 
View是一个接口,实现类型支持不同的view类型(jsp,freemarker,pdf,excel等) 

6、处理器Handler(重点:需要程序员开发


springmvc和struts2的区别: 
1,springmvc是基于方法开发的,struts2是基于类开发的 
2、springmvc可以支持单例开发(通过形参的方式接收数据,每个方法的形参都有自己的独立的内存空间,多线程安全的),建议使用单例开发,方法结束,形参数据销毁。struts2只能多例开发(通过成员变量来接收数据的传递,成员变量是共享的,多线程不安全的)。 
3、经过实际测试,struts2速度慢,在于它使用了struts标签,建议使用jstl

案例:


架构:


首先我们看一下web.xml  

这里我们配置一个前端控制器,我们还有连接一个对应的xml,还有一个防止无法访问静态变量的节点。

[java] view plain copy
 
 
  1. <!DOCTYPE web-app PUBLIC  
  2.  "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  
  3.  "http://java.sun.com/dtd/web-app_2_3.dtd" >  
  4.   
  5. <web-app>  
  6.   <display-name>Archetype Created Web Application</display-name>  
  7.   
  8.   <servlet>  
  9.     <servlet-name>springmvc</servlet-name>  
  10.     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  11.   
  12.     <init-param>  
  13.       <param-name>contextConfigLocation</param-name>  
  14.       <param-value>classpath:springmvc03Mutil.xml</param-value>  
  15.     </init-param>  
  16.   <load-on-startup>1</load-on-startup>  
  17.   </servlet>  
  18.   <servlet-mapping>  
  19.     <servlet-name>springmvc</servlet-name>  
  20.     <url-pattern>/</url-pattern>  
  21.   </servlet-mapping>  
  22.   <!--<servlet-mapping>  
  23.     <servlet-name>default</servlet-name>  
  24.     <url-pattern>*.jpg</url-pattern>  
  25.   </servlet-mapping>-->  
  26. </web-app>  

这里面我们继承一个MultiActionController并写出丰富doFirst 我们的返回值是ModelAndView

我们返回的是对应bean节点的id我们这个是连接的京东的网站。

然后我们配置一个contrllro层  用来编写代码

[java] view plain copy
 
 
  1. package cn.happy.springmvc03;  
  2.   
  3. import org.springframework.web.servlet.ModelAndView;  
  4. import org.springframework.web.servlet.mvc.Controller;  
  5. import org.springframework.web.servlet.mvc.multiaction.MultiActionController;  
  6.   
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9.   
  10. /** 
  11.  * Created by linlin on 2017/8/14. 
  12.  */  
  13. public class MutilController extends MultiActionController {  
  14.     public ModelAndView doFirst(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {  
  15.        ModelAndView mv=new ModelAndView();  
  16.        mv.setViewName("jd");  
  17.         return mv;  
  18.     }  
  19. }  

然后我们配置一下xml   我的这个是引用外部视图 所有一会我在发一个引用的xml

这里面我们需要配置视图解析器和方法名称解析器,我们们在页面上访问的是

我们这里面的SimpleUrlHandlerMapping是别的测试,在这里我们不需要关注。

这里我们有引用视图对象,引用我们下面的xml里面放的是视图。

[java] view plain copy
 
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.                xmlns:aop="http://www.springframework.org/schema/aop"  
  4.                xmlns:mvc="http://www.springframework.org/schema/mvc"  
  5.                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  6.                xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  7.  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd  
  8.  http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">  
  9. <!--图片显示-->  
  10. <!--<mvc:default-servlet-handler/>-->  
  11. <mvc:resources  location="/img/" mapping="/img/**"></mvc:resources>  
  12.   
  13.   
  14.  <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  15.       <property name="urlMap">  
  16.           <map>  
  17.               <entry key="/doFirst.do" value="MutilController"></entry>  
  18.           </map>  
  19.       </property>  
  20.     </bean>  
  21.     <!--视图解析器-->  
  22.   <!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">  
  23.         <property name="prefix" value="/WEB-INF/"></property>  
  24.         <property name="suffix" value=".jsp"></property>  
  25.     </bean>-->  
  26.     <!--引入视图对象-->  
  27.     <bean class="org.springframework.web.servlet.view.XmlViewResolver">  
  28.         <property name="location" value="classpath:viewjd.xml"></property>  
  29.     </bean>  
  30.     <bean id="beanNameResout" class="org.springframework.web.servlet.view.BeanNameViewResolver"/>  
  31.   
  32.     <bean id="paramMehod" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">  
  33.         <property name="mappings">  
  34.             <props>  
  35.                 <prop key="/first1.do">doFirst</prop>  
  36.             </props>  
  37.         </property>  
  38.     </bean>  
  39.   
  40. <bean id="paramMehod2" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">  
  41.     <property name="paramName" value="actionName"></property>  
  42. </bean>  
  43.   
  44.   
  45. <bean id="MutilController" class="cn.happy.springmvc03.MutilController">  
  46.   <property name="methodNameResolver" ref="paramMehod2"></property>  
  47. </bean>  
  48. </beans>  

这里我们用的是ParameterMethodNameResolver这个类

里面的actionName是我们在页面上的一个判断,判断他是不是我们用 的方法名 如果actionName=方法名,我们就会进入界面

外部xml,这里面的id是我们在contrllor里面的返回的set.ViewName("jd")

这里面一个是连我的项目内的页面,一个是连接的京东的官网。

[java] view plain copy
 
 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">  
  5.     <!--内部视图-->  
  6.     <bean id="internal" class="org.springframework.web.servlet.view.JstlView">  
  7.         <property name="url" value="/WEB-INF/doFirst.jsp"></property>  
  8.     </bean>  
  9.     <!--外部视图-->  
  10.     <bean id="jd" class="org.springframework.web.servlet.view.RedirectView">  
  11.         <property name="url" value="https://www.jd.com/"></property>  
  12.     </bean>  
  13. </beans>  
原创粉丝点击