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工程源代码"中,我们可以看到以下几个关键文件: 1. `.classpath`:这是一个Eclipse IDE特有的文件,它包含了项目所需的类路径信息。在这里,你可以看到Spring库、JDK和其他依赖库的位置,这对于...
8. **安全考虑**:源代码应包含安全措施,例如限制文件大小以防止DoS攻击,验证文件类型以避免恶意文件上传,以及使用安全的文件命名策略,防止路径遍历攻击。 9. **异常处理**:在处理文件上传和下载时,可能会...
Spring MVC会根据视图解析器配置将这个视图名转化为实际的JSP页面路径。 5. **运行与测试**:将项目部署到Tomcat或其他Servlet容器,通过浏览器访问预设的URL,如"http://localhost:8080/myHelloWorld/hello",查看...
本指南的源代码将帮助初学者深入理解Spring MVC的工作原理以及如何在实际项目中应用。 1. **Spring MVC基本概念** - **模型(Model)**:负责存储应用的数据,通常由JavaBeans或POJOs(Plain Old Java Objects)...
在Spring源代码解析的第四部分中,我们将重点关注DispatcherServlet的初始化过程,它是Spring MVC的核心组件。 DispatcherServlet是一个特殊的Servlet,它负责接收HTTP请求,并根据请求映射到相应的处理器...
《Spring 3.2.5 源代码深度解析》 Spring框架作为Java开发中的核心组件,其3.2.5版本是众多开发者广泛使用的稳定版本。深入理解Spring的源代码,有助于提升开发者对框架机制的理解,从而更好地利用它来构建高效、可...
视图解析器是Spring MVC中用于确定视图名对应的实际资源路径的组件。例如,InternalResourceViewResolver可以将视图名转换为JSP页面的URL。 依赖注入(Dependency Injection, DI)是Spring框架的核心特性之一。在...
在这个"spring mvc简单测试的可运行的源代码"中,我们可以学习到如何配置和运行一个基础的Spring MVC应用。 1. **环境准备**:首先,你需要安装Java JDK和Apache Maven或Gradle,它们是构建和管理Java项目的工具。...
- 创建`spring-servlet.xml`,作为Spring MVC的核心配置文件,用于配置视图解析器、模型-视图-控制器(Controller)等。 5. **编写Maven的pom.xml**: - pom.xml是Maven项目的核心,它包含了项目信息、依赖、构建...
控制器方法通常使用`@RequestMapping`来映射URL路径。 4. **@RequestMapping**:用于将HTTP请求映射到控制器方法,可以根据URL、HTTP方法等进行精确匹配。 5. **ModelAndView**:在控制器方法中返回的对象,包含了...
### 三、Spring MVC源代码分析 #### 3.1 DispatcherServlet源代码解读 DispatcherServlet的核心流程可以概括为以下几步: 1. **读取配置**:通过`doGetDispatcherServlet()`方法读取配置文件,初始化...
- 当用户发送一个请求时,ActionServlet捕获请求,解析请求URL中的路径信息。 - 根据`struts-config.xml`中的配置,ActionServlet确定对应的ActionForm和Action。 - ActionForm对请求参数进行校验,然后Action...
为了实现这些功能,Spring MVC的配置文件(如servlet-context.xml)需要正确配置组件扫描、视图解析器、拦截器等。不过,现代Spring MVC项目往往倾向于使用Java配置或Spring Boot的自动配置,减少了XML的使用。 在...
在描述中提到的“spring的例子 很实用的,例子的源码啊”,暗示这个压缩包包含了一个可以运行的Spring MVC项目源代码,适合学习和参考。这通常包括配置文件、控制器类、服务层接口及其实现、模型对象、视图解析以及...
这对于理解和开发其他类似的Web框架,如Spring MVC或Struts2,都有很大的帮助。此外,源码阅读还能提升我们对Java Servlet、JSP和JavaBeans规范的理解,对Java Web开发的整体技术栈有更深入的认识。
这些配置文件可能会包含数据源配置、视图解析器设置、拦截器定义等。 3. 控制器(Controller):在Spring MVC中,控制器负责接收HTTP请求并处理业务逻辑。控制器通常通过实现`@Controller`注解的类来定义,如`...
7. **视图解析器**:Spring MVC提供了多种视图解析器,如InternalResourceViewResolver,它用于将模型数据绑定到视图(比如JSP页面)并生成响应。 8. **依赖注入(DI)**:Spring MVC利用Spring框架的核心特性DI,...
2. **Multipart解析器**: - 文件上传通常涉及到multipart/form-data类型的表单数据。Java标准库中的`HttpServletRequest`不直接支持这种格式,因此我们需要第三方库如Apache Commons FileUpload或Spring的`...
在工程中,SpringMVC的配置文件会定义视图解析器、处理器映射器等组件,以及控制器类的配置。 **MyBatis**: MyBatis是一个持久层框架,它简化了数据库操作,允许开发者编写SQL语句并将其绑定到Java代码中。MyBatis...