struts2是MVC框架,其中org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter过滤器是前端控制器
使用Action类模拟二级分发控制器来实现减少对s2标签的依赖,这样的话对模板原型的破坏会比较小,实现方式如下
public class _Base extends ActionSupport{
private String action ="";
private String message ="";
public void setAction(String action){this.action=action;}
public String getAction(){return this.action;}
public void setMessage(String message){this.message=message;}
public String getMessage(return this.message);
public String dispatcher(){
String _action = this.getAction();
String _invokeAction ="doIndex";
if(StringUtils.isBlank(_action)){
}else{
_invokeAction = _action;
}
String _result = SUCCESS;
try{
Object obj = org.apache.commons.beanutils.MethodUtils.invokeMethod(this, _action, new Object[]{});
if(obj!=null){
_result = obj.toString();
}
}catch(Exception e){
this.setMessage(e.getMessage());
}
return _result;
}
public String doIndex(){
return SUCCESS;
}
}
public class Login extends _Base{
private String username="";
private String password="";
public void setUsername(String username){this.username=username;}
public String getUsername(){return this.username;}
public void setPassword(String password){this.password=password;}
public String getPassword(){return this.password;}
public String doLogin(){
try{
//invoke service
return "home";
}catch(Exception e){
}
retrun INPUT;
}
public String doLogout(){
//clear session
return SUCCESS;
}
}
struts.xml
<action name="Login" class="Login" method="dispatcher">
<result name="success" type="freemarker">/WEB-INF/content/Login.ftl</result>
<result name="input" type="freemarker">/WEB-INF/content/Login.ftl</result>
<result name="home" type="redirectAction">Home</result>
</action>
Login.ftl
<html><head><title></title></head><body>
<form>
<input type="hidden" name="action" value="doLogin"/><!--此隐藏域作为分发器的分发标志-->
<input type="text" name="username" value="${username}"/>
<input type="text" name="password" value="${password}"/>
<input type="submit" value="登陆"/>
</form>
</body></html>
登出的链接则产生 Login.do?action=doLogout
此思想来源于php的mvc实现,在php中实现MVC的框架一般都是有一个前端控制器如
index.php,通过传参调用不同的控制器和action,如
index.php?ctrl=Login&action=defaultView
index.php?ctrl=Login&action=doLogin
index.php?ctrl=Login&action=doLogout
分享到:
相关推荐
Struts2使用过滤器(Filter)作为前端控制器,相比于Struts1使用servlet作为前端控制器更加优雅。 - **适用范围**:Struts2广泛应用于企业级Java Web项目的开发中,特别是那些需要处理大量用户交互和数据展示的应用。 ...
Struts2是一个强大的Java EE应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的Web应用。这个“struts2,struts2 demo”很显然是一个包含Struts2框架示例代码的压缩包,旨在帮助开发者理解和学习如何在实际...
在Struts2中,前端控制器由`StrutsPrepareAndExecuteFilter`扮演,它负责拦截所有请求,并根据配置将请求传递给相应的Action处理。 #### 二、Struts2快速入门 ##### 2.1 安装与配置 1. **下载Struts2开发包** - ...
Struts2 的主要特点是使用 FilterDispatcher 作为核心控制器,将请求分发到相应的 Action 中。下面是 Struts2 面试题中涉及到的知识点: 1. Struts1 和 Struts2 的区别: Struts1 和 Struts2 是两个不同的框架,...
FilterDispatcher是Struts2的核心控制器,它负责接收用户请求并将其分发到相应的Action进行处理。Action映射则是在配置文件中定义的,用于指定特定URL路径对应的具体Action。 **1.2.4 Struts2的架构与组件** ...
5. **Result**:Action执行后,将控制权转移给特定的结果类型,如JSP、FreeMarker模板等。 6. **Model-View-Controller**:模型负责业务逻辑,视图负责展示,控制器负责协调两者。 `控制器组件`可能详细讲解了...
它根据配置文件(struts-config.xml)中的映射信息来处理请求,将请求分发到相应的Action,Action执行完毕后返回一个ActionForward对象,指示应该转向哪个JSP页面或者其他的Action。 Struts与Spring框架的结合使用...
Struts2是一个强大的Java Web应用程序框架,用于构建MVC(模型-视图-控制器)架构的应用。这个"基于Struts2的简单购书管理系统"是一个典型的案例,它可以帮助初学者理解如何在实际项目中运用Struts2框架。下面将详细...
Struts1是基于ActionServlet的早期MVC框架,它将请求分发到特定的Action,然后通过配置文件(struts-config.xml)来管理动作和视图的映射。而Struts2则是在Struts1的基础上进行了全面改进,采用了拦截器...
5. **MVC模式**:Struts2遵循MVC模式,其中控制器负责处理请求并将任务分发给模型或视图。这种模式有助于分离关注点,提高代码的可重用性和可维护性。 6. **灵活的配置**:Struts2支持XML格式的配置文件来初始化...
Struts2框架详解 Struts2是Java Web开发中的一款广泛应用的开源MVC框架,它构建在...然而,随着Spring Boot和其他轻量级框架的崛起,Struts2在现代Web开发中的使用有所减少,但在一些大型企业项目中仍占据一席之地。
通过配置文件,你可以控制请求如何被分发到相应的Action,以及Action执行后的响应如何被展示。 3. **Interceptor拦截器**:拦截器是Struts2的一大特色,它们在Action调用前后执行,可以用于实现如日志记录、权限...
8. **FilterDispatcher**:作为Struts2的前端控制器,FilterDispatcher负责接收HTTP请求,解析并分发到相应的Action。 Struts2-2.5.13的更新可能包括: - 性能优化:可能对核心组件进行了优化,以提高处理速度和...
Struts2框架的核心依赖于多个jar包,这些jar包包含了控制器组件、拦截器、动作类、结果类型、标签库等关键功能。 1. **核心库**:struts2-core.jar是Struts2的核心库,它提供了框架的基础结构,包括Action、Result...
Struts2框架作为Java Web开发领域中的一款经典MVC(Model-View-Controller)框架,其工作原理涉及到了一系列复杂的组件交互与流程控制。本文将深入解析Struts2的工作流程,帮助开发者理解其核心机制。 ### 一、...
用户请求首先会被Struts2的前端控制器(DispatcherServlet)捕获,然后根据配置文件(struts.xml)中的映射信息,将请求分发到相应的Action进行处理。 2. **拦截器(Interceptor)**:Struts2的核心特性之一是拦截...
1. **FilterDispatcher**: 这是Struts2框架的入口点,负责拦截HTTP请求并根据配置将请求分发到相应的Action。 2. **StrutsPrepareAndExecuteFilter**: 从Struts2.2开始,FilterDispatcher被这个新的过滤器替代,它...
Action执行完毕后,返回一个结果,Struts2根据结果配置将控制权交给相应的JSP页面,展示登录/注册状态或错误信息。 此外,项目可能还会包含一些配置文件,如Struts2的配置文件(struts.xml)用于定义Action和结果...
在Struts 1框架中,ActionServlet是控制器的主要实现,它接收到请求后会根据配置信息(如struts-config.xml)将请求转发给相应的Action类处理。而在一个简单的自定义Controller中,`doProcess`方法扮演了类似的角色...