import java.util.Map; import com.opensymphony.xwork2.ActionSupport; import org.springframework.stereotype.Controller; import org.springframework.context.annotation.Scope; import org.apache.struts2.interceptor.RequestAware; @SuppressWarnings("all") @Scope("prototype") @Controller("forwardAction") public class ForwardAction extends ActionSupport implements RequestAware { @Override public String execute() throws Exception { this.getRequest().put("attr", "value set in HttpRequest"); return SUCCESS; } private Map<String, Object> request; private String color; //private String valueOnStack; public Map<String, Object> getRequest() { return request; } public void setRequest(Map<String, Object> request) { this.request = request; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getValueOnStack() { return "value return from getValueOnStack() method"; } /**public void setValueOnStack(String valueOnStack) { this.valueOnStack = valueOnStack; }*/ }
import java.io.IOException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.ServletException; import org.apache.struts2.ServletActionContext; @SuppressWarnings("all") public class ShowServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.getOutputStream().println("<html>"); response.getOutputStream().println("<head>"); response.getOutputStream().println("</head>"); response.getOutputStream().println("<body>"); response.getOutputStream().println("<p>Hello from ShowServlet.doPost()</p>"); response.getOutputStream().println("<p>Attribute set in struts 2 Action = " + request.getAttribute("attr") + "</p>"); response.getOutputStream().println("<p>Request parameters = " + request.getParameter("color") + "</p>"); String valueOnStack = (String) ServletActionContext.getValueStack(request).findValue("valueOnStack"); response.getOutputStream().println("<p>Value received from Action property on ValueStack = " + valueOnStack + "</p>"); response.getOutputStream().println("</body>"); response.getOutputStream().println("</html>"); } }
struts.xml中的配置:
<action name="ForwardAction" class="forwardAction">
<result name="success">/showServlet</result>
</action>
Action模型在ValueStack中的属性值是根据Action的get方法的名称决定的,跟是否存在该属性无关。
相关推荐
2. 服务器接收到请求后,Servlet容器(如Tomcat)根据web.xml中的配置找到对应的Servlet(通常是Struts的Front Controller,如.struts2Dispatcher)。 3. Struts DispatcherServlet解析请求,根据配置文件确定要调用...
当一个项目同时使用了Struts2框架和直接的Servlet时,可能会遇到问题,因为Struts2有自己的请求处理流程,可能会覆盖或干扰到Servlet的正常工作。为了解决这个问题,可以创建一个过滤器,例如`ReDispatcherFilter`...
ActionServlet作为控制器,负责拦截所有的HTTP请求,解析请求中的信息,并根据struts-config.xml配置文件来决定如何转发到相应的Action。ActionForm用于封装请求参数,Action执行业务逻辑,最后,视图(View)负责...
通过这个Demo,你可以学习到如何配置Struts框架,理解ActionServlet和Action类的工作原理,以及它们如何与Servlet交互来处理请求和响应。同时,这个Demo也可能会展示如何利用Struts提供的优势,如更好的结构、可重用...
JavaEE是一种广泛应用于企业级应用开发的技术平台,它包含了多种技术规范和框架,如Servlet、JSP、Struts等,用于构建动态、交互式的Web应用程序。在这个“房屋租赁系统”中,开发人员选择了Struts作为主要的MVC...
1. **ActionServlet**:这是Struts框架的主要入口点,继承自Servlet,负责接收请求并转发到相应的Action。 2. **ActionForm**:负责从请求中收集数据并封装成业务对象。 3. **Action**:执行实际的业务逻辑,并通过`...
Servlet和Struts是Java Web开发中的两个重要组件。Servlet是一种Java编程语言的接口,用于扩展服务器的功能,而Struts是一个基于MVC(Model-View-Controller)设计模式的开源框架,它极大地简化了Java Web应用的开发...
### AJAX在JSP、Struts、Servlet、WebWork中的应用 #### 一、引言 随着Web技术的发展,用户对网站交互性和响应速度的要求越来越高。AJAX(Asynchronous JavaScript and XML)作为一种新兴的技术,能够在不重新加载...
《基于Struts、Servlet与MySQL的学生成绩管理系统详解》 在Web开发领域,Java技术一直扮演着重要的角色。本文将深入探讨一个使用Struts、Servlet和MySQL数据库构建的简单学生成绩管理系统,帮助初学者理解这些技术...
总结来说,Servlet模拟Struts_MVC是一个学习MVC模式的好方法,它让我们亲身体验到控制器如何调度模型和视图,以及它们之间如何协作完成Web应用的处理流程。通过这样的实践,我们可以深入理解MVC模式的优势,为将来...
当一个请求到达服务器时,Struts2的前端控制器(通常是一个Servlet,如`StrutsPrepareAndExecuteFilter`)拦截请求,并根据配置文件(struts.xml)来决定哪个Action应该处理这个请求。Action执行完毕后,可以通过...
Action会根据请求生成一个ActionForward,指定到一个Servlet或JSP页面,该页面负责设置响应头(如Content-Disposition、Content-Type等),并将文件内容流化到响应体中。对于中文文件名,同样需要注意编码问题,确保...
在这一章节中,你可能会接触到配置文件(struts-config.xml)以及Action和ActionForward的概念。 4. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它允许开发者使用Java对象模型来操作数据库。通过配置...
在Struts1中,Action类作为Controller接收用户请求,调用业务逻辑,然后通过ActionForward返回到相应的视图。配置文件struts-config.xml定义了Action映射和数据绑定。此外,Struts1还提供了Tiles框架,用于创建可...
ActionServlet根据ActionForward转发请求到指定的JSP页面。 4. **Struts 1.2.9的改进与特性** - 动态方法调用(Dynamic Method Invocation, DMI):允许通过URL直接调用Action的特定方法。 - 国际化...
5. **返回处理结果**:处理完成后,Action对象返回一个`ActionForward`对象,指示ActionServlet如何响应客户端的请求,如跳转到另一个页面或返回JSON数据等。 #### Struts2原理概述 **Struts2** 是对Struts1的改进...
3. **转发控制**:Action处理完请求后,ActionServlet会根据ActionForward的定义,将响应转发到指定的视图(JSP、HTML等)进行渲染。 4. **异常处理**:如果在处理过程中出现异常,ActionServlet会按照预设的异常...
Struts是Java Servlet和JSP技术的扩展,旨在简化MVC架构的实现。通过使用Struts,开发者可以将业务逻辑、数据访问和用户界面分离,从而提高代码的可维护性和可复用性。 2. **MVC架构** MVC模式是一种设计模式,...
5. Action返回一个ActionForward对象,指示ActionServlet应该转发到哪个JSP页面。 6. JSP页面渲染视图,显示结果。 **3. Struts1面试常见问题及答案:** - **什么是Struts?** Struts是一个基于MVC设计模式的Java ...