初学struts 有一个问题没弄明白,就是关于如何把请求转交到action servlet处理,以下具体说一下:
在web.xml中定义的映射规则是
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
(好像这种形式比较安全)
而在实际的页面中的一个请求是这样的:
<html:form
action="/adminCpasswd">
<html:hidden property="action"/>
<tr>
<td height="18" bgcolor="#FFFFFF"> <table width="100%" border="0" cellpadding="5" cellspacing="0">
......(中间略,太长了)
<tr>
<td height="18" bgcolor="#FFFFFF">
<html:submit styleClass="BUTTN-FIX1"><bean:message key="bbscs.botton.submit"/></html:submit>
<html:reset styleClass="BUTTN-FIX1"><bean:message key="bbscs.botton.reset"/></html:reset>
</td>
</tr>
</html:form>
在struts-config.xml中的action-mappings如下:
<action-mappings>
...(前后略)
<action input="admin.cpasswd" name="adminCpaswdForm"
path="/adminCpasswd" scope="request" type="com.laoer.bbscs.web.action.AdminCpasswd" validate="true">
<forward name="admincpasswd" path="admin.cpasswd" />
</action>
...
</action-mappings>
问题就是既然在web.xml中的定义的映射规则是以.do结尾的请求才会交给action servlet处理,而我看到的往往都是上面这种形式的的action(如上面的action="/adminCpasswd"),并没有以.do结尾,却也能交给它处理,这是怎么事,要是这样也能处理,那不是几乎所有的相对路径形式的请求都会交到struts的action servlet去处理,那上web.xml中的映射定义不是没起到作用,能不能帮忙解释一下,到底什么样的请求会转交到struts去处理,谢谢!
分享到:
相关推荐
### Struts2与Servlet共存问题详解 #### 一、问题背景 在Java Web开发中,Struts2框架因其简洁的MVC模式和强大的插件系统而被广泛使用。但在某些场景下,开发者可能需要同时使用Struts2和其他Servlet技术(如...
每个方法对应一个特定的用户请求,当用户发送请求时,Struts框架会根据配置文件(struts-config.xml或struts.xml)中的映射关系调用相应的Action方法。 在源码层面,Struts框架的工作原理包括以下步骤: 1. 用户...
`ActionServlet`是Struts框架中的关键组件,负责处理来自客户端的所有请求,并将其分发到相应的Action处理类。它是基于Servlet容器(如Tomcat)的,因此必须部署在一个支持Servlet的环境中。 #### 三、Action...
当一个请求到达服务器时,Struts2的过滤器(通常名为`FilterDispatcher`或`StrutsPrepareAndExecuteFilter`)会捕获这个请求,然后根据配置的Action映射决定执行哪个Action。在Action执行过程中,如果需要直接访问...
在Struts2中,我们通常会在Action类中处理这个逻辑,而在Servlet中,这将在doGet或doPost方法内完成。 现在,我们来看案例中的两个DEMO——JqUploadTest和CosUpload。JqUploadTest可能是指使用jQuery的Upload插件...
Struts2通过FilterDispatcher这个Servlet过滤器来拦截所有到达服务器的请求,判断是否需要由Struts2框架处理,如果是,则根据配置的Action映射调用相应的execute()方法。 Struts2的包结构清晰,每个包都有其特定的...
Struts2中的`ActionServlet`就是对Servlet API的一种扩展,它作为整个框架的调度中心,负责接收请求、调用Action并返回相应的结果。 在Struts2中,Servlet API主要体现在以下几点: 1. **过滤器(Filter)**:...
在Java Web开发中,特别是使用Struts框架进行Web应用程序构建的过程中,ActionServlet扮演着至关重要的角色。它作为Struts框架的核心组件之一,负责处理用户请求,并将其映射到具体的业务逻辑组件(Action)上执行。...
在Struts2中,用户请求首先会被Struts2的ActionServlet拦截,然后通过配置的Action映射找到对应的Action类来处理请求。Action执行完成后,返回一个Result,该Result定义了如何展示结果,可能是跳转到一个新的JSP页面...
在`myStruts`这个压缩包中,可能包含模拟Struts1流程所需的代码和配置文件,如ActionServlet的实现、Action类、ActionForm类、struts-config.xml以及展示结果的JSP页面。通过对这些文件的分析和实践,你可以更深入地...
当请求到达时,`ActionServlet`会根据配置文件(struts-config.xml)中的映射信息决定如何处理请求。 3. `ActionServlet`会根据请求的URL解析出对应的`ActionMapping`,这个映射告诉框架哪个`Action`类应该被调用来...
在Struts中,`ActionServlet`是关键组件之一,它是Struts框架与Servlet容器之间的桥梁。 **ActionServlet** 是Struts框架的核心控制器,它是一个定制的Servlet,负责处理所有的HTTP请求。当用户发起一个请求时,...
在本主题"Servlet简单模拟Struts2"中,我们将探讨如何利用Servlet来实现类似Struts2框架的一些关键功能,包括请求拦截、XML配置解析、动态代理以及日志拦截。 首先,让我们了解一下Struts2框架的核心特性。Struts2...
在Struts配置文件(struts.xml)中,需要定义Action及其对应的处理方法,以及跳转的视图页面。例如,注册Action可能会有一个"execute"方法,而登录Action可能有"login"和"logout"方法。同时,需要配置URL映射,使...
在Struts2中,默认情况下,所有的请求都会映射到.action结尾的URL上。为了去掉这个.action,我们需要配置Struts2的配置文件,通常是struts.xml。在该文件中,我们可以定义一个全局结果类型(global result type)来...
6. **module5**:可能包含了Struts的配置文件(struts-config.xml),这个文件定义了ActionMapping,指定ActionServlet如何处理请求,以及Action和结果页面之间的映射。 7. **module1**:可能是项目的入口点,如web...
ActionServlet根据请求的URL和配置文件(struts-config.xml)来决定调用哪个Action,Action是Struts中的控制器组件,它处理业务逻辑并决定如何与视图交互。 **Struts与Servlet的关系** 1. **请求处理**:在传统的...
ActionServlet作为这个控制器,是Struts框架的核心。它根据配置文件(struts-config.xml)中的映射信息来处理请求,将请求分发到相应的Action,Action执行完毕后返回一个ActionForward对象,指示应该转向哪个JSP页面...
Struts通过提供Action类的概念解决了这个问题,每个Action类可以包含多个业务逻辑方法,用户请求通过一个ActionForm对象将数据传递给相应的Action方法。 模仿Struts的Servlet也遵循了类似的模式,允许开发者在一个...
1. 直接集成:在Servlet中创建Struts2的ActionContext,并手动设置请求和响应对象,然后调用Action的execute()方法执行业务逻辑。 2. 使用Filter转发:配置Struts2的Filter在Servlet处理完请求后,将控制权交给...