版本十,这个版本我们将Action类型改为DispatchAction类型:
由于这个Action可以接受参数,所以我们前面的多个Action可以合并为一个Action:
新增一个MyBaseAction
MyBaseAction.java
package com.coderdream.action; 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; public class MyBaseAction extends DispatchAction { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (request.getSession().getAttribute("userView") == null) { return mapping.findForward("login"); } return super.execute(mapping, form, request, response); } }
将多个Action合并为一个Action
StudentAction.java
package com.coderdream.action.student; 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 com.coderdream.action.MyBaseAction; import com.coderdream.db.StudentDao; import com.coderdream.form.StudentForm; public class StudentAction extends MyBaseAction { /** * 如果没有传递任何标识参数(如command参数),则默认调用unspecified方法 */ protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("StudentAction=>>unspecified()"); // 调用业务逻辑操作 StudentDao studentDao = new StudentDao(); List<StudentForm> studentFormList = studentDao.quertAllStudent(); request.setAttribute("studentFormList", studentFormList); return mapping.findForward("listSuccess"); } /** * 添加学生 * * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("StudentAction=>>add()"); // 得到客户的的提交数据 no,name,sex,age,dept StudentForm studentForm = (StudentForm) form; studentForm.setNo(studentForm.getNo()); studentForm.setName(studentForm.getName()); studentForm.setSex(studentForm.getSex()); studentForm.setAge(studentForm.getAge()); studentForm.setDept(studentForm.getDept()); System.out.println(studentForm); StudentDao studentDao = new StudentDao(); int result = studentDao.saveStudent(studentForm); System.out.println("Result: " + result); // request.setAttribute("studentFormList", studentFormList); System.out.println("Save Student!"); // 调用业务逻辑操作 // List studentList = StudentManager.getInstance().findAllStudent(); // request.setAttribute("studentList", studentList); List<StudentForm> studentFormList = studentDao.quertAllStudent(); request.setAttribute("studentFormList", studentFormList); ActionForward af = new ActionForward("student.do", true); return af; } /** * 删除学生 * * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("StudentAction=>>delete()"); // 得到学生的学号 StudentForm studentForm = (StudentForm) form; String sno = studentForm.getNo(); System.out.println("sno: " + sno); // 删除学生 StudentDao studentDao = new StudentDao(); int result = studentDao.deleteStudent(sno); System.out.println("Delete Result: " + result); // 查询最新的学生列表 List<StudentForm> studentFormList = studentDao.quertAllStudent(); request.setAttribute("studentFormList", studentFormList); ActionForward af = new ActionForward("student.do", true); return af; } /** * 根据学生代码查询需要修改的学生 * * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward modifyStudent(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("StudentAction=>>modifyStudent()"); // 获取从页面表单中提交过来的值 StudentForm studentForm = (StudentForm) form; String sno = studentForm.getNo(); System.out.println("sno: " + sno); StudentDao studentDao = new StudentDao(); StudentForm tempStudentForm = studentDao.quertStudent(sno); request.setAttribute("tempStudentForm", tempStudentForm); return mapping.findForward("modifyStudent"); } /** * 修改学生 * * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward modify(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { System.out.println("StudentAction=>>modify()"); // 得到客户的的提交数据 no,name,sex,age,dept StudentForm studentForm = (StudentForm) form; studentForm.setNo(studentForm.getNo()); studentForm.setName(studentForm.getName()); studentForm.setSex(studentForm.getSex()); studentForm.setAge(studentForm.getAge()); studentForm.setDept(studentForm.getDept()); System.out.println(studentForm); StudentDao studentDao = new StudentDao(); int result = studentDao.updateStudent(studentForm); System.out.println("Result: " + result); // request.setAttribute("studentFormList", studentFormList); System.out.println("Update Student!"); request.setAttribute("tempStudentForm", studentForm); ActionForward af = new ActionForward("student.do", true); return af; } }
struts-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="loginForm" type="com.coderdream.form.LoginForm" /> <form-bean name="studentForm" type="com.coderdream.form.StudentForm" /> </form-beans> <action-mappings> <action path="/login" type="com.coderdream.action.LoginAction" name="loginForm" validate="yes" input="/login.jsp" scope="request"> <forward name="success" path="/index.jsp" /> <forward name="failure" path="/failure.jsp" /> </action> <action path="/student/student" type="com.coderdream.action.student.StudentAction" name="studentForm" scope="request" parameter="command"> <forward name="listSuccess" path="/WEB-INF/jsp/student/student.jsp" /> <forward name="modifyStudent" path="/WEB-INF/jsp/student/updateStudent.jsp" /> <forward name="updateStudent" path="/WEB-INF/jsp/student/updateStudent.jsp" /> <forward name="deleteStudent" path="/WEB-INF/jsp/student/student.jsp" /> <forward name="saveStudent" path="/WEB-INF/jsp/student/student.jsp" /> </action> <action path="/student/addStudent" forward="/WEB-INF/jsp/student/addStudent.jsp" name="studentForm"> </action> <action path="/index" type="com.coderdream.action.IndexAction" scope="request"> <forward name="success" path="/index.jsp" /> </action> </action-mappings> <!-- 加载资源文件 --> <message-resources parameter="com.coderdream.resources.application" /> </struts-config>
同时,考虑到安全,我们将student相关的jsp放到WEB-INF文件夹下的jsp/student文件夹中:
更新后的student.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html:html lang="ture"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录成功</title> </head> <body> <html:link page="/index.do">返回首页</html:link> | 操作员: <logic:present name="userView" scope="session"> <bean:write name="userView" property="userName" /> </logic:present> <hr> <br> 学生列表: <br> <table border="1" bgcolor="#11FFCC"> <tr> <th>学号</th> <th>姓名</th> <th>性别</th> <th>年龄</th> <th>部门</th> <th colspan="2">操作</th> </tr> <logic:iterate id="studentForm" indexId="index" name="studentFormList"> <tr> <td><bean:write name="studentForm" property="no" /></td> <td><bean:write name="studentForm" property="name" /></td> <td><bean:write name="studentForm" property="sex" /></td> <td><bean:write name="studentForm" property="age" /></td> <td><bean:write name="studentForm" property="dept" /></td> <td><html:link page="/student/student.do?command=modifyStudent" paramId="no" paramName="studentForm" paramProperty="no">修改</html:link></td> <td><html:link page="/student/student.do?command=delete" paramId="no" paramName="studentForm" paramProperty="no">删除</html:link></td> </tr> </logic:iterate> </table> <br> <html:link page="/student/addStudent.do">新增学生</html:link> </body> </html:html>
更新后的addStudent.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="com.coderdream.form.StudentForm"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html:html lang="ture"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录成功</title> </head> <body> <html:link page="/index.do">返回首页</html:link> | <html:link page="/student/student.do">返回学生信息页面</html:link> | 操作员: <logic:present name="user" scope="session"> <bean:write name="user" property="userName" /> </logic:present> <hr> <br> 新增学生 <hr> <html:form action="/student/student.do?command=add"> <table width="100%" border="1" bgcolor="#11FFCC"> <tr> <td>学号</td> <td><html:text property="no" value="2013001" /></td> </tr> <tr> <td>姓名</td> <td><html:text property="name" value="Lisi" /></td> </tr> <tr> <td>性别</td> <td><html:text property="sex" value="female" /></td> </tr> <tr> <td>年龄</td> <td><html:text property="age" value="18" /></td> </tr> <tr> <td>部门</td> <td><html:text property="dept" value="law" /></td> </tr> <tr> <td></td> <td><html:submit> 保存 </html:submit></td> </tr> </table> </html:form> </body> </html:html>
updateStudent.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="com.coderdream.form.StudentForm"%> <% StudentForm tempStudentForm = (StudentForm) request.getAttribute("tempStudentForm"); %> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html:html lang="ture"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录成功</title> </head> <body> <html:link page="/index.do">返回首页</html:link> | <html:link page="/student/student.do">返回学生信息页面</html:link> | 操作员: <logic:present name="userView" scope="session"> <bean:write name="userView" property="userName" /> </logic:present> <hr> <br> 修改学生详细信息 <hr> <html:form action="/student/student.do?command=modify"> <table width="100%" border="1" bgcolor="#11FFCC"> <tr> <td>学号</td> <td><html:text property="no" value="<%=tempStudentForm.getNo()%>" readonly="true" disabled="disabled" /></td> </tr> <tr> <td>姓名</td> <td><html:text property="name" value="<%=tempStudentForm.getName()%>" /></td> </tr> <tr> <td>性别</td> <td><html:text property="sex" value="<%=tempStudentForm.getSex()%>" /></td> </tr> <tr> <td>年龄</td> <td><html:text property="age" value="<%=tempStudentForm.getAge().toString()%>" /></td> </tr> <tr> <td>部门</td> <td><html:text property="dept" value="<%=tempStudentForm.getDept()%>" /></td> </tr> <tr> <td></td> <td><html:submit> 保存 </html:submit></td> </tr> </table> </html:form> </body> </html:html>
更新后的index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html:html lang="ture"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登录成功</title> </head> <body> 用户登录成功!操作员: <logic:present name="userView" scope="session"> <bean:write name="userView" property="userName" /> </logic:present> <hr> <html:link page="/student/student.do">学生列表</html:link> |课程列表 </body> </html:html>
源代码: