`

Spring三大URL路径解析器(附工程源代码)

阅读更多

Spring有三个方法名称解析器(MethodNameResolver):


(1)ParameterMethodNameResolver

(2)InternalPathMethodNameResolver

(3)PropertiesMethodNameResolver

关于三个的使用方法,不必多说,网上可以搜到很多,这里只是简单的提下

ParameterMethodNameResolver在给定的路径后会有一个指定调用哪个方法的参数跟随

例如:http://localhost:9999/method/parameterMethodNameResolver?funcflg=getDate

getDate就是要调用的方法

InternalPathMethodNameResolver方法名包含在路径中

http://localhost:9999/method/internalPathMethodController/getDate

getDate就是要调用的方法

PropertiesMethodNameResolver 调用的方法写在=后面


http://localhost:9999/method/propertiesMethodController/suibian=getDate

getDate就是要调用的方法


相关的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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 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>method</display-name>
  <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:mvc.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

Spring的配置文件:

mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
	
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix"><value>/</value></property>
        <property name="suffix"><value>.jsp</value></property>
    </bean>
    <import resource="parameterMethod.xml" />   
    <import resource="internalPathMethod.xml" />  
    <import resource="propertiesMethod.xml" />  
    
</beans> 

parameterMethod.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!--ParameterMethodNameResolver 开始 -->
    <bean id="paramResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
		<property name="paramName">
			<value>funcflg</value>
		</property>
		<property name="defaultMethodName" value="getDate"></property>  
	</bean>
	<!--ParameterMethodNameResolver 结束 -->
	
	<!-- ParameterMethodNameResolver业务方法  开始-->
	<bean name="/parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.MultiActionController">
		<property name="methodNameResolver">
			<ref bean="paramResolver"/>
		</property>
		<property name="delegate">
			<ref bean="methodController"/>
		</property>
	</bean>
	<bean id="methodController" class="com.liuc.ui.ParameterMethodController"/>
	<!-- ParameterMethodNameResolver业务方法 结束-->
</beans>

  internalPathMethod.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!--InternalPathMethodNameResolver 开始 -->
    <bean id="urlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    	<property name="mappings">
    		<props>
    			<prop key="/internalPathMethodController/*">internalPathMethodController</prop>
    		</props>
    	</property>
    </bean>
    <!-- 根据请求的路径名称来调用特定的方法 -->
    <bean id="cMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver" >
    </bean>
	<!--InternalPathMethodNameResolver 结束 -->
	
	<!-- InternalPathMethodNameResolver业务方法  开始-->
	<bean id="internalPathMethodController" class="com.liuc.ui.InternalPathMethodController">
		<property name="methodNameResolver">
			<ref local="cMethodNameResolver"/>
		</property>
	</bean>
	<!-- InternalPathMethodNameResolver业务方法 结束-->
</beans>

propertiesMethod.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!--PropertiesMethodNameResolver 开始 -->
    <bean id="urlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    	<property name="mappings">
    		<props>
    			<prop key="/propertiesMethodController/*">propertiesMethodController</prop>
    		</props>
    	</property>
    </bean>
    <!-- 根据请求的路径名称来调用特定的方法 -->
    <bean id="cMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver" >
    	<property name="mappings" value="/propertiesMethodController/*=getDate"/>
    </bean>
	<!--PropertiesMethodNameResolver 结束 -->
	
	<!-- PropertiesMethodNameResolver业务方法  开始-->
	<bean id="propertiesMethodController" class="com.liuc.ui.PropertiesMethodController">
		<property name="methodNameResolver">
			<ref local="cMethodNameResolver"/>
		</property>
	</bean>
	<!-- PropertiesMethodNameResolver业务方法 结束-->
</beans>

 

最后工程的访问路径为



ParameterMethodNameResolver  http://localhost:9999/method/parameterMethodNameResolver?funcflg=getDate

InternalPathMethodNameResolver  http://localhost:9999/method/internalPathMethodController/getDate

PropertiesMethodNameResolver  http://localhost:9999/method/propertiesMethodController/suibian=getDate



工程源代码见附件





 

分享到:
评论

相关推荐

    Spring工程源代码

    在提供的"Spring工程源代码"中,我们可以看到以下几个关键文件: 1. `.classpath`:这是一个Eclipse IDE特有的文件,它包含了项目所需的类路径信息。在这里,你可以看到Spring库、JDK和其他依赖库的位置,这对于...

    Spring完整的上传下载源代码

    8. **安全考虑**:源代码应包含安全措施,例如限制文件大小以防止DoS攻击,验证文件类型以避免恶意文件上传,以及使用安全的文件命名策略,防止路径遍历攻击。 9. **异常处理**:在处理文件上传和下载时,可能会...

    使用Spring快速实现web开发的小实例工程源代码

    Spring MVC会根据视图解析器配置将这个视图名转化为实际的JSP页面路径。 5. **运行与测试**:将项目部署到Tomcat或其他Servlet容器,通过浏览器访问预设的URL,如"http://localhost:8080/myHelloWorld/hello",查看...

    Spring MVC Beginner’s Guide 源代码

    本指南的源代码将帮助初学者深入理解Spring MVC的工作原理以及如何在实际项目中应用。 1. **Spring MVC基本概念** - **模型(Model)**:负责存储应用的数据,通常由JavaBeans或POJOs(Plain Old Java Objects)...

    Spring源代码解析(四):Spring_MVC.doc

    在Spring源代码解析的第四部分中,我们将重点关注DispatcherServlet的初始化过程,它是Spring MVC的核心组件。 DispatcherServlet是一个特殊的Servlet,它负责接收HTTP请求,并根据请求映射到相应的处理器...

    spring3.2.5源代码

    《Spring 3.2.5 源代码深度解析》 Spring框架作为Java开发中的核心组件,其3.2.5版本是众多开发者广泛使用的稳定版本。深入理解Spring的源代码,有助于提升开发者对框架机制的理解,从而更好地利用它来构建高效、可...

    Mastering Spring MVC 4(2015.09)源码

    视图解析器是Spring MVC中用于确定视图名对应的实际资源路径的组件。例如,InternalResourceViewResolver可以将视图名转换为JSP页面的URL。 依赖注入(Dependency Injection, DI)是Spring框架的核心特性之一。在...

    spring mvc简单测试的可运行的源代码

    在这个"spring mvc简单测试的可运行的源代码"中,我们可以学习到如何配置和运行一个基础的Spring MVC应用。 1. **环境准备**:首先,你需要安装Java JDK和Apache Maven或Gradle,它们是构建和管理Java项目的工具。...

    使用Eclipse构建Maven的Spring MVC项目的源代码

    - 创建`spring-servlet.xml`,作为Spring MVC的核心配置文件,用于配置视图解析器、模型-视图-控制器(Controller)等。 5. **编写Maven的pom.xml**: - pom.xml是Maven项目的核心,它包含了项目信息、依赖、构建...

    源码: 看透Spring MVC:源代码分析与实践

    控制器方法通常使用`@RequestMapping`来映射URL路径。 4. **@RequestMapping**:用于将HTTP请求映射到控制器方法,可以根据URL、HTTP方法等进行精确匹配。 5. **ModelAndView**:在控制器方法中返回的对象,包含了...

    看透springMvc源代码分析与实践

    ### 三、Spring MVC源代码分析 #### 3.1 DispatcherServlet源代码解读 DispatcherServlet的核心流程可以概括为以下几步: 1. **读取配置**:通过`doGetDispatcherServlet()`方法读取配置文件,初始化...

    struts 1.3 框架的源代码

    - 当用户发送一个请求时,ActionServlet捕获请求,解析请求URL中的路径信息。 - 根据`struts-config.xml`中的配置,ActionServlet确定对应的ActionForm和Action。 - ActionForm对请求参数进行校验,然后Action...

    Spring MVC使用Demo

    为了实现这些功能,Spring MVC的配置文件(如servlet-context.xml)需要正确配置组件扫描、视图解析器、拦截器等。不过,现代Spring MVC项目往往倾向于使用Java配置或Spring Boot的自动配置,减少了XML的使用。 在...

    wa-spring1-SpringProject.zip_spring mvc 例子

    在描述中提到的“spring的例子 很实用的,例子的源码啊”,暗示这个压缩包包含了一个可以运行的Spring MVC项目源代码,适合学习和参考。这通常包括配置文件、控制器类、服务层接口及其实现、模型对象、视图解析以及...

    struts1源代码

    这对于理解和开发其他类似的Web框架,如Spring MVC或Struts2,都有很大的帮助。此外,源码阅读还能提升我们对Java Servlet、JSP和JavaBeans规范的理解,对Java Web开发的整体技术栈有更深入的认识。

    spring 三级框架例子

    这些配置文件可能会包含数据源配置、视图解析器设置、拦截器定义等。 3. 控制器(Controller):在Spring MVC中,控制器负责接收HTTP请求并处理业务逻辑。控制器通常通过实现`@Controller`注解的类来定义,如`...

    springmvc(spring4版本)+自带登录和拦截器

    7. **视图解析器**:Spring MVC提供了多种视图解析器,如InternalResourceViewResolver,它用于将模型数据绑定到视图(比如JSP页面)并生成响应。 8. **依赖注入(DI)**:Spring MVC利用Spring框架的核心特性DI,...

    javaweb文件上传与下载模块源代码

    2. **Multipart解析器**: - 文件上传通常涉及到multipart/form-data类型的表单数据。Java标准库中的`HttpServletRequest`不直接支持这种格式,因此我们需要第三方库如Apache Commons FileUpload或Spring的`...

    Spring+SpringMVC+MyBatis可运行工程源码

    在工程中,SpringMVC的配置文件会定义视图解析器、处理器映射器等组件,以及控制器类的配置。 **MyBatis**: MyBatis是一个持久层框架,它简化了数据库操作,允许开发者编写SQL语句并将其绑定到Java代码中。MyBatis...

Global site tag (gtag.js) - Google Analytics