- 浏览: 1231154 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (718)
- HTML (13)
- JS基础 (23)
- JS应用 (40)
- AJAX (6)
- JSP相关 (12)
- JAVA基础 (52)
- JAVA应用 (74)
- APPLET (11)
- SWING\RCP (2)
- JAVA反射 (6)
- 设计模式 (26)
- 数据库设计 (20)
- Struts (35)
- Struts2 (12)
- Spring (22)
- Hibernate (45)
- Ibatis (18)
- mybatis (3)
- SSH (8)
- UML (5)
- WebService (3)
- XML (16)
- Log4j (7)
- WEB容器 (26)
- 数据结构 (36)
- Linux (34)
- Ruby on Rails (1)
- 其它技术 (27)
- IDE配置 (15)
- 项目实战 (2)
- Oracle (69)
- JAVA报表 (7)
- Android学习 (2)
- 博客链接 (1)
- 网络基础 (1)
- WEB集群 (1)
- .Net开发 (11)
- PB (4)
- 系统构建 (15)
最新评论
-
jnjeC:
牛逼啊哥们,讲得太好了
Maven仓库理解、如何引入本地包、Maven多种方式打可执行jar包 -
九尾狐的yi巴:
很好 感谢!
Itext中文处理(更新版) -
luweifeng1983:
有用的,重启一下嘛。
设置eclipse外部修改文件后自动刷新 -
Master-Gao:
设置了也不管用,怎么破呢?
设置eclipse外部修改文件后自动刷新 -
aigo_h:
锋子还有时间写博客,还是很闲哈!
Add directory entries问题
应用中经常有增、删、改、查操作,如果象一前一样使用ListUserAction,AddUserAction等使action的数量增加,并且同一个模块分散开来不易维护。
使用DispatchAction处理。
要点:
自定义Action如UserAction继承自DispatchAction。
注意不要复写DispatchAction的excute方法,因为DispatchAction的excute方法里面的操作就是获得parameter参数值,并转向到该参数值对应的方法。
如下:
index.jsp
链接到user_list.jsp
<html:link action="user.do?method=list">User List</html:link>
user_list.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@include file="/share/jsp_head_include.jspf" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script type="text/javascript"> function addUser(){ window.self.location = "user/user_input.jsp"; } </script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <form name="ListUserForm" action=""> <table border="1" > <tr> <td width="15">Id</td> <td width="10">Name</td> <td width="10">Age</td> <td width="10">Pwd</td> </tr> <logic:present name="userList"> <c:forEach items="${userList}" var="userModel"> <tr> <td width="15"> <INPUT type="checkbox" value="${userModel.userId}"/><c:out value="${userModel.userId}"></c:out> </td> <td width="10"><c:out value="${userModel.userName}"></c:out></td> <td width="10"><c:out value="${userModel.age}"></c:out></td> <td width="10"><c:out value="${userModel.pwd}"></c:out></td> </tr> </c:forEach> </logic:present> <tr><td colspan="4"> <html:button property="btn2" value="Add" onclick="addUser()"></html:button> </td></tr> </table> </form> </body> </html>
user_input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@include file="/share/jsp_head_include.jspf" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <html:form action="user.do" method="post"> <input type="hidden" name="method" value="add"/> id:<html:text property="userId"></html:text><br> name:<html:text property="userName"></html:text><br> age:<html:password property="pwd" redisplay="false"/><br> <html:submit>submit</html:submit> <html:reset/> </html:form> </body> </html>
配置文件
<action path="/user" type="com.lwf.struts.action.UserAction" name="userForm" parameter="method" > <forward name="success" path="/user/user_list.jsp"></forward> <forward name="addSuccess" path="/user.do?method=list"></forward> </action>
UserAction
package com.lwf.struts.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.actions.DispatchAction; import com.lwf.struts.action.admin.UserForm; import com.lwf.struts.action.entity.UserModel; import com.lwf.struts.logic.admin.UserBean; public class UserAction extends DispatchAction { public ActionForward list(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { try { List<UserModel> userList = UserBean.getUserList(); request.setAttribute("userList", userList); System.out.println("list"); } catch (Exception e) { e.printStackTrace(); } return mapping.findForward("success"); } public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { UserForm userForm = (UserForm)form; int id = userForm.getUserId(); String username = userForm.getUserName(); String pwd = userForm.getPwd(); UserBean.addUser(id,username,pwd); return mapping.findForward("addSuccess"); } }
package com.lwf.struts.logic.admin; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import com.lwf.struts.action.entity.UserModel; import com.lwf.struts.util.DB; public class UserBean { public static List<UserModel> getUserList() throws Exception{ List<UserModel> list = new ArrayList<UserModel>(); String sqlStr = "select * from \"user\""; Connection conn = DB.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sqlStr); while(rs.next()){ UserModel model = new UserModel(); model.setUserId(rs.getInt("user_id")); model.setUserName(rs.getString("user_name")); model.setPwd(rs.getString("user_pwd")); model.setAge(rs.getInt("age")); list.add(model); } return list; } public static void addUser(int id, String username, String pwd) throws Exception{ Connection conn = DB.getConnection(); Statement stmt = conn.createStatement(); String sqlStr = "insert into \"user\"(user_id,user_name,user_pwd) values(" + id + ", '" + username + "',' " + pwd + "')"; int n = stmt.executeUpdate(sqlStr); System.out.println(n); } }
package com.lwf.struts.action.entity; public class UserModel { private int userId; private String userName; private String pwd; private int age; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
package com.lwf.struts.action.admin; import org.apache.struts.action.ActionForm; public class UserForm extends ActionForm { private int userId; private String userName; private String pwd; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
这里使用UserForm与UserModel实际上可以是一个。
package com.lwf.struts.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DB { public static Connection getConnection(){ Connection conn = null; String url = "jdbc:postgresql://localhost/FOOD"; String user = "foodadmin"; String password = "admin"; try { Class.forName("org.postgresql.Driver"); conn = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } }
发表评论
-
DispatchAction 和DynaValidateActionForm 结合使用时的问题
2011-03-08 16:23 936使用DispatchAction使得程序员能够大大减少acti ... -
ActionForm中使用集合属性并自动组装数据
2011-01-18 14:32 929http://blog.csdn.net/m0085_cn/a ... -
Cannot find bean org.apache.struts.taglib.html.BEAN in any scope
2010-11-10 14:13 976开的过程中碰到问题:Cannot find bean org. ... -
Struts 结合 Validate框架验证详解
2010-10-25 14:00 1508转自:http://student.csdn.net/spac ... -
JSTL与struts1标签
2010-08-31 10:17 1555JSTL与struts标签: http://www.360d ... -
如何自动清空struts表单域
2010-06-30 17:44 1270为了某种需要,formBean的SCOPE设置成了ses ... -
form验证与动态验证框架
2010-06-06 17:22 1391form验证返回ActionErrors. 动态验证则实现J ... -
resourcebundleeditor在eclipse里面的设置和使用
2010-05-30 11:30 1752我们一般使用native2ascii工具得到struts资源文 ... -
forward属性与ForwardAction类
2010-04-07 17:08 1175forward属性与ForwardAction类在配置文件按以 ... -
struts容错处理
2010-04-07 15:20 1189struts容错处理: 当客户请求的action不存在的时候 ... -
struts声明式异常二
2010-04-07 15:18 1176上文如果资源文件改为: error.login.usernu ... -
struts声明式异常一
2010-04-06 23:10 1058struts声明式异常: 在配置文件中配置exception ... -
struts编程式异常--html:error与html:message
2010-04-03 11:39 2042struts编程式异常过程: 截获异常信息;创建异常信息; ... -
struts国际化,从资源文件读取异常信息
2010-04-03 01:56 1201示例演示登录时从资源文件读取用户名或密码错误信息 logon ... -
struts国际化,资源文件读取三
2010-04-02 23:42 1031本示例演示客户进行语言设置,从而更改整个系统语言. 客户在c ... -
struts国际化,资源文件读取二
2010-04-02 22:18 1638package com.lwf.struts.util; ... -
struts国际化,资源文件读取一
2010-04-02 00:19 1378国际化的发展 看本文之前可先看一下properties文件的 ... -
struts html标签自动保存提交的表单值。
2010-04-01 17:01 2064我们之前JSP提交值后如果还要取得值怎么做? 应该是取得a ... -
ActionMapping相关
2010-04-01 16:02 1086一、Map的设置map.put("path" ... -
ActionForward相关问题
2010-04-01 15:13 1365一、静态的ActionForward不能更改属性: stru ...
相关推荐
它们是Action接口的实现类,主要用于映射HTTP请求到特定的方法,从而实现业务逻辑的分发。 首先,让我们详细了解`DispatchAction`。`DispatchAction`是由Apache Struts框架提供的一个基础类,它扩展了`Action`类。...
总之,Struts DispatchAction是Java Web开发中一种有效的请求分发机制,它允许在一个Action类中组织和管理多个业务处理方法,提高了代码的可读性和可维护性。然而,随着技术的发展,如Struts2的出现,开发者可以选择...
在更现代的Struts版本,如Struts 2,已经提供了更优雅的方式来实现多方法调用,例如使用`@Action`注解和拦截器来实现方法分发,这样既可以保持代码的整洁,又能提高安全性。 总结来说,"Struts中等同于...
在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑处理的例子。 DispatchAction是Struts框架中的一个关键组件,它扮演着控制器的角色,...
这个"SSH整合继承DispatchAction的简单例子"是一个演示如何将这三个框架集成在一起,并利用Struts的DispatchAction来实现多请求分发的功能。 首先,让我们深入理解SSH框架的核心功能。Spring是一个强大的依赖注入...
由于同事的要求,才给同事的表亲做了这个毕业设计的代码 呵呵。也来献丑了。 里面包含了我构建的完整的框架。...对于formbean及dispatchAction的使用有详细的代码 希望大家批评指正。 jar包请看.classpath文件
本文将深入解析Struts中的控制器组件,特别是DispatchAction的使用。 在Struts框架中,控制器主要由ActionServlet和Action类组成。ActionServlet作为前端控制器,负责拦截所有HTTP请求,并根据配置文件(struts-...
这样,当用户发送不同的请求时,`DispatchAction`会根据请求参数调用相应的方法,实现灵活的请求分发。 在计算器示例中,可能包含以下组件: 1. **Action类**:这是`DispatchAction`的子类,包含了多个处理不同...
2. **15_struts_dispatchaction_usermgr**: DispatchAction 是 Struts 提供的一个特殊Action,它可以将请求分发到多个方法,而不是只调用一个处理方法。Usermgr 可能是用户管理模块,展示如何使用 DispatchAction ...
`struts_dispatchaction_usermgr`可能是一个示例,展示了如何使用DispatchAction来处理多个子操作。DispatchAction允许在一个Action类中定义多个方法,每个方法对应不同的请求路径,提高了代码复用性。 6. **...
04 Struts_04DispatchAction : 分发Action,根据设置的参数值提交到不同的方法进行处理业务,演示数学运算 05 Struts_05DynaActionForm : 相对应ActionForm来说,动态ActionForm只需要在配置文件中配置就可以了,...
Spring可以通过DispatcherServlet实现请求的分发,Struts的DispatchAction可以被Spring MVC的Controller所替代,这样可以利用Spring的依赖注入和AOP特性,提升应用程序的可维护性和灵活性。 最后,"eclipse.spring...
最后,Struts还提供了其他实用工具,如防止表单重复提交的功能、文件上传的支持以及通过DispatchAction实现更复杂的请求分发。这些工具极大地丰富了Struts的功能,使得开发者能够构建出更加健壮和高效的Web应用程序...
public class LookupDispatchAction extends DispatchAction { public ActionForward method1(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ...
`dispatchAction`可能是一个关于如何在应用中分发动作以触发状态改变的代码片段,这在状态管理中非常常见。而"报错案例"可能包含了一些具体的错误处理示例,展示了如何捕获、解析和展示错误信息给用户。 综上所述,...
- ActionServlet:核心控制器,负责请求分发和管理配置。 - ActionForm:用于接收和校验用户输入,连接模型和视图。 6. **DispatchAction与Action的区别**: - DispatchAction是可复用的Action,允许在一个类中...
为了解决这个问题,作者推荐使用单元测试的方式来提高测试效率。 #### 单元测试示例 ```java public class BaseActionTest extends MockStrutsTestCase { public BaseActionTest(String arg0) { super(arg0); }...
`ForwardAction`和`DispatchAction`是Struts中常见的两种Action,它们分别用于请求转发和分发。`ForwardAction`通常用于将用户请求转发到一个指定的JSP页面或Servlet,而`DispatchAction`则允许根据不同的请求参数...
Action类处理用户请求,Form Bean存储表单数据,DispatchAction用于分发请求到不同的业务逻辑方法,而Forward则定义了请求转发的路径。 "struts的结构.doc"文档应该详细介绍了Struts框架的基本架构,其中包括Action...