Action:当点击按钮后,检查当前页面的状态,获取表单中的数据,调用组建完成相应的操作
Components:组建完成数据库的操作,并返回操作后的状态给action
TAG,XSL,JSP,config:获取操作action结果,传输到终端,获取用户的输入,调用action完成操作
Action分析
说明 | 增 |
导入包
当用户点击按钮后 方法开始
声明变量message
初始化action this.initializeAction(request, "UserAddPageAction");
首先判断用户页面状态,如果离线或非法登陆,弹出错误信息并返回登陆页面
获取相关属性的参数
检查参数是否合法?
将参数封装如vo
将vo 作为参数传给组建,并调用组建执行相关的操作
依据组建的返回值,调用相应的结果页面 | 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.seavision.employee.bean.UserVO; import com.seavision.employee.common.BaseAction; import com.seavision.employee.components.UserManage; import com.seavision.employee.components.UserManageImpl;
public class UserAddAction extends BaseAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { try { // 初始化Action String message = ""; this.initializeAction(request, "UserAddPageAction"); // 获取参数,判断在线状态 UserVO userVO = (UserVO) this.getAttribute("loginUserBean"); if (this.check(userVO)) { message += "您还没有登录或您离开系统时间太久,请重新登录!"; // 返回到登录页面 return this.moveToFailure(message, "logon", actionMapping); }
String userName = ""; String password = ""; String role = ""; userName = this.getParameter("userName"); password = this.getParameter("password"); role = this.getParameter("role"); if (userName.equals("")) { message += "用户名不能为空!"; return this.moveToFailure(message, "false", actionMapping); } if (password.equals("")) { message = "用户密码不能为空!"; return this.moveToFailure(message, "false", actionMapping); } UserVO uservo = new UserVO(); uservo.setPassword(password); uservo.setUserName(userName); uservo.setRole(role); UserManage userM = new UserManageImpl(); String fin = userM.addUser(uservo);
if (fin.equals("failed")) { return this.moveToFailure("添加失败!", "false", actionMapping); } else { return this.moveToSuccess("success", actionMapping); }
} catch (Exception e) { return this.moveToError(e.getMessage(), "error", actionMapping); }
} } |
删 | |
package com.seavision.employee.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 com.seavision.employee.bean.UserVO; import com.seavision.employee.common.BaseAction; import com.seavision.employee.components.UserManageImpl;
public class UserDeleteAction extends BaseAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { try { // 初始化Action String message = ""; this.initializeAction(request, "UserDeleteAction"); // 获取参数,判断在线状态 UserVO userVO = (UserVO) this.getAttribute("loginUserBean"); if (this.check(userVO)) { message += "您还没有登录或您离开系统时间太久,请重新登录!"; // 返回到登录页面 return this.moveToFailure(message, "logon", actionMapping); }
String userID = ""; userID = this.getParameter("userID"); if (userID.equals("")) { message += "用户id为空"; return this.moveToFailure(message, "false", actionMapping); }
String fin = new UserManageImpl().delUser(Integer.parseInt(userID));
if (fin.equals("failed")) { return this.moveToFailure("此用户不存在!", "false", actionMapping); } else { return this.moveToSuccess("success", actionMapping); } } catch (Exception e) { return this.moveToError(e.getMessage(), "error", actionMapping); } } } | |
改 | |
package com.seavision.employee.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 com.seavision.employee.bean.UserVO; import com.seavision.employee.common.BaseAction; import com.seavision.employee.components.UserManageImpl;
public class UserEditAction extends BaseAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { try { // 初始化Action String message = ""; this.initializeAction(request, "UserEditAction"); // 获取参数,判断在线状态 UserVO userVO = (UserVO) this.getAttribute("loginUserBean"); if (this.check(userVO)) { message += "您还没有登录或您离开系统时间太久,请重新登录!"; // 返回到登录页面 return this.moveToFailure(message, "logon", actionMapping); } UserVO uservo = new UserVO(); uservo.setUserID(Integer.parseInt(this.getParameter("userID"))); uservo.setUserName(this.getParameter("userName")); uservo.setPassword(this.getParameter("password")); uservo.setRole(this.getParameter("role"));
UserManageImpl userM = new UserManageImpl(); UserVO uservo1 = userM.getUser(Integer.parseInt(this .getParameter("userID"))); // 获取数据库的userName String database_userName = uservo1.getUserName().trim(); // 获取输入文本框的userName String input_userName = uservo.getUserName().trim(); // 定义字符串接收修改状态 String fin = ""; if (database_userName.equals(input_userName))//***************** fin = userM.editUser(uservo); // 按用户名编辑数据库,并接收操作结果状态 if (fin.equals("failed")) return this.moveToFailure("修改不成功!", "false", actionMapping); else return this.moveToSuccess("success", actionMapping);
} catch (Exception e) { return this.moveToError(e.getMessage(), "error", actionMapping); }
}
} | |
登陆 | |
package com.seavision.employee.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 com.seavision.employee.bean.UserVO; import com.seavision.employee.common.BaseAction; import com.seavision.employee.common.ManageFactory; import com.seavision.employee.components.UserManage;
public class LoginAction extends BaseAction { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) throws Exception { try { // 初始化LoginAction; this.initializeAction(request, "LoginAction"); // 定义参数; String userName = ""; String password = ""; String message = ""; UserVO loginUserBean = new UserVO(); UserManage userManage = ManageFactory.getUserManageImpl(); // 获得登录用户信息; userName = this.getParameter("userName"); password = this.getParameter("password"); // 校验 if (this.check(userName)) { message += "用户名不能为空!"; return this.moveToFailure(message, "false", actionMapping); } if (this.check(password)) { message += "密码不能为空!"; return this.moveToFailure(message, "false", actionMapping); } loginUserBean = userManage.getLoginUser(userName, password); if (!this.check(loginUserBean)) { // 用户登陆信息写入session封装对象 this.setAttribute("loginUserBean", loginUserBean); String role = loginUserBean.getRole();
// 登陆到管理员页面或普通用户
return this.moveToSuccess("success", actionMapping);// 登陆到管理员界面
} else { return this.moveToFailure("登陆失败,用户名或密码输入不正确!", "false", actionMapping); } } catch (Exception e) { return this.moveToError(e.getMessage(), "error", actionMapping); } }
} |
组建分析
说明 | 代码 |
| package com.seavision.employee.components;
import java.util.Vector;
import com.seavision.employee.bean.EmployeeBaseVO; import com.seavision.employee.bean.UserVO; import com.seavision.employee.dboperate.DBBaseBean; import com.seavision.employee.dboperate.ResultSetCache;
/** * * @see EmployeeBaseManageImpll类实现 EmployeeBaseManage接口定义员工信息的(增、删、改、查)方法, * 实现对数据库的操作 */ public class EmployeeBaseManageImpl extends DBBaseBean implements EmployeeBaseManage {
public String addEmployeeBase(EmployeeBaseVO employeeBase) { // TODO 自动生成方法存根 try { // 建立数据库连接 this.openConnection(); // 用SQL语句获取相关的属性 String sql = "insert into EmployeeBase(name,sex,birthYearMonth,eduLevel,strongFond,accessionTime,position,lock) values(" + employeeBase.getName() + "','" + employeeBase.getSex() + "','" + employeeBase.getBirthYearMonth() + "','" + employeeBase.getEduLevel() + "','" + employeeBase.getStrongFond() + "','" + employeeBase.getAccessionTime() + "','" + employeeBase.getPosition() + "','" + employeeBase.getLock() + "')";
boolean tof = this.executeUpdate(sql);
if (tof) { // 通过布尔变量tof 判断数据库是否更新 System.out.println("添加成功!"); return "success"; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { this.close(); } return "failed"; }
public String delEmployeeBase(int employeeID) { // TODO 自动生成方法存根 try { this.openConnection(); String sql = "delete from EmployeeBase where employeeID=" + employeeID; boolean tof = this.executeUpdate(sql); if (tof) { System.out.println("删除成功!"); return "success"; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { this.close(); } return "failed"; }
public String editEmployeeBase(EmployeeBaseVO employeeBase) { // TODO 自动生成方法存根 try { this.openConnection(); String sql = "update EmployeeBase set name=" + employeeBase.getName() + ",sex='" + employeeBase.getSex() + "',birthYearMonth='" + employeeBase.getBirthYearMonth() + ",eduLevel='" + employeeBase.getEduLevel() + "',strongFond='" + employeeBase.getStrongFond() + ",accessionTime='" + employeeBase.getAccessionTime() + "',position='" + employeeBase.getPosition() + ",lock='" + employeeBase.getLock() + "' where employeeID=" + employeeBase.getEmployeeID(); boolean tof = this.executeUpdate(sql); if (tof) { System.out.println("修改成功!"); return "success"; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { this.close(); } return "failed"; }
public EmployeeBaseVO getEmployeeBase(int employeeBaseID) { // TODO 自动生成方法存根 EmployeeBaseVO employeeBase = null; try { this.openConnection(); String sql = "select * from EmployeeBase where employeeBaseID=" + employeeBaseID; ResultSetCache rsc = this.executeQuery(sql); while (rsc.next()) { employeeBase = new EmployeeBaseVO(); employeeBase.setEmployeeID(rsc.getInt("employeeID")); employeeBase.setName(rsc.getString("name")); employeeBase.setSex(rsc.getString("sex")); employeeBase.setBirthYearMonth(rsc.getString("birthYearMonth")); employeeBase.setEduLevel(rsc.getString("eduLevel")); employeeBase.setStrongFond(rsc.getString("strongFond")); employeeBase.setAccessionTime(rsc.getString("accessionTime")); employeeBase.setPosition(rsc.getString("position")); employeeBase.setLock(rsc.getInt("lock")); } return employeeBase; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { this.close(); } return null; }
public Vector getAllEmployeeBaseList(int employeeBaseID) { // TODO 自动生成方法存根 Vector vector = new Vector(); EmployeeBaseVO employeeBase = null; try { this.openConnection(); String sql = "select * from EmployeeBase where employeeBaseID=" + employeeBaseID; ResultSetCache rsc = this.executeQuery(sql); while (rsc.next()) { employeeBase = new EmployeeBaseVO(); employeeBase.setEmployeeID(rsc.getInt("employeeID")); employeeBase.setName(rsc.getString("name")); employeeBase.setSex(rsc.getString("sex")); employeeBase.setBirthYearMonth(rsc.getString("birthYearMonth")); employeeBase.setEduLevel(rsc.getString("eduLevel")); employeeBase.setStrongFond(rsc.getString("strongFond")); employeeBase.setAccessionTime(rsc.getString("accessionTime")); employeeBase.setPosition(rsc.getString("position")); employeeBase.setLock(rsc.getInt("lock")); } return vector; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { this.close(); } return null; }
public String lockEmployee(int employeeID) { // TODO 自动生成方法存根 EmployeeBaseVO employeeBase = new EmployeeBaseVO(); try { this.openConnection(); String sql = "update EmployeeBase set lock=1 where employeeID=" + employeeBase.getEmployeeID(); boolean tof = this.executeUpdate(sql); if (tof) { System.out.println("修改成功!"); return "success"; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { this.close(); } return "failed"; }
public String unlockEmployee(int employeeID) { // TODO 自动生成方法存根 EmployeeBaseVO employeeBase = new EmployeeBaseVO(); try { this.openConnection(); String sql = "update EmployeeBase set lock=0 where employeeID=" + employeeBase.getEmployeeID(); boolean tof = this.executeUpdate(sql); if (tof) { System.out.println("修改成功!"); return "success"; } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { this.close(); } return "failed"; }
public Vector queryEmployeeBaseList(String employeename) { // TODO 自动生成方法存根 Vector vector = new Vector(); EmployeeBaseVO employeeBase = null; try { this.openConnection(); String sql = "select * from EmployeeBase where name=" + employeename; ResultSetCache rsc = this.executeQuery(sql); while (rsc.next()) { employeeBase = new EmployeeBaseVO(); employeeBase.setEmployeeID(rsc.getInt("employeeID")); employeeBase.setName(rsc.getString("name")); employeeBase.setSex(rsc.getString("sex")); employeeBase.setBirthYearMonth(rsc.getString("birthYearMonth")); employeeBase.setEduLevel(rsc.getString("eduLevel")); employeeBase.setStrongFond(rsc.getString("strongFond")); employeeBase.setAccessionTime(rsc.getString("accessionTime")); employeeBase.setPosition(rsc.getString("position")); employeeBase.setLock(rsc.getInt("lock")); } return vector; } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { this.close(); } return null; }
public int getEmployeeNum() { // TODO 自动生成方法存根 int num=0; try { this.openConnection(); String sql = "select count(*) as num from EmployeeBase"; ResultSetCache rsc = (ResultSetCache) this.executeQuery(sql);
if (rsc.next()) {
num=Integer.parseInt(rsc.getString("num"));
}
} catch (Exception e) { // TODO: handle exception e.printStackTrace(); } finally { this.close(); }
return num; }
} |
Tag例子
| 代码 |
| package com.seavision.employee.tag;
import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.TagSupport;
import com.seavision.employee.bean.UserVO; import com.seavision.employee.common.BaseTag; import com.seavision.employee.components.UserManageImpl;
public class UserEditTag extends BaseTag {
public int doStartTag() throws JspException {
this.initializeTag("UserEditTag"); // 初始化标签类
try {
this.appendMessage("<root>");
UserVO loginuser = (UserVO) this.getAttribute("loginUserBean"); // 获取用户登陆信息赋给UserVO的对象
String message = (String) this.getAttribute("message"); // 获取request中的message对象
this.removeAttribute("message"); // 移除session中message的信息
if (this.check(loginuser)) { // 判断用户登陆信息是否存在
message = "您还没有登录或您离开系统时间太久,请重新登录";
String ResultMsg = "登陆失败";
this.appendMessage("<system>"); this.appendMessage("<appMessage>"); this.appendMessage("<message>" + message + "</message>"); this.appendMessage("<ResultMsg>" + ResultMsg + "</ResultMsg>"); this.appendMessage("</appMessage>"); this.appendMessage("</system>"); } else { UserManageImpl usermangerimpl = new UserManageImpl(); int userID = Integer.parseInt(this.getParameter("userID")); UserVO uservo; uservo = (UserVO) usermangerimpl.getUser(userID); String nowPage = this.getParameter("nowPage"); if (uservo != null) { this.appendMessage("<Users>"); this.appendMessage("<User>"); this.appendMessage("<userID>" + uservo.getUserID() + "</userID>"); this.appendMessage("<userName>" + uservo.getUserName() + "</userName>"); this.appendMessage("<password>" + uservo.getPassword() + "</password>"); this.appendMessage("<role>" + uservo.getRole() + "</role>"); this.appendMessage("</User>"); this.appendMessage("</Users>"); this.appendMessage("<nowPage>" + nowPage + "</nowPage>"); } this.appendMessage("</root>"); this.outputMessage(); } } catch (Exception ex) { this.outputStandardErrorMessage(); }
return TagSupport.EVAL_BODY_INCLUDE; // 继续计算BODY体
}
public int doEndTag() throws JspException {
return EVAL_PAGE; } } |
对应xsl例子
| 代码 |
| <?xml version="1.0" encoding="GB2312"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="GB2312" indent="no"/> <xsl:template match="root">
<html>
<head> <meta http-equiv="Content-Language" content="zh-cn"/> <meta name="GENERATOR" content="Microsoft FrontPage 5.0"/> <meta name="ProgId" content="FrontPage.Editor.Document"/> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"/> <title>用户编辑</title> <script language="JavaScript" src="../js/checkform.js" type="text/javascript"></script> </head>
<body topmargin="0" leftmargin="0">
<p> </p> <p align="center"><font size="6" face="楷体_GB2312" color="#0099CC">用户编缉</font></p> <form method="POST" name="form1" action="UserEdit.do?pageNumber={nowPage}"> <div align="center"> <center> <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; border: 1px solid #0099CC; padding-left: 4; padding-right: 4; padding-top: 1; padding-bottom: 1" bordercolor="#111111" width="747" id="AutoNumber1" height="144"> <xsl:for-each select="Users/User"> <tr> <td height="49" width="223"><input type="hidden" name="userID" size="20"><xsl:attribute name="value"><xsl:value-of select="userID" /></xsl:attribute></input> </td> <td height="49" width="82" align="right"><font size="2">用户名:</font></td> <td height="49" width="184"> <b> <input type="text" name="userName" size="20" maxlength="15"><xsl:attribute name="value"><xsl:value-of select="userName" /></xsl:attribute></input></b></td> <td height="49" width="253"> </td> </tr> <tr> <td height="42" width="223"> </td> <td height="42" width="82" align="right"><font size="2">密  码<b>:</b></font></td> <td height="42" width="184"> <b> <input type="password" name="password" size="20" maxlength="15"><xsl:attribute name="value"><xsl:value-of select="password" /></xsl:attribute></input></b></td> <td height="42" width="253"> </td> </tr> <tr> <td height="51" width="223"> </td> <td height="51" width="82" align="right"><font size="2">角  色<b>:</b></font></td> <td height="51" width="184"><b> <xsl:if test="role[.='1']"> <select size="1" name="role" > <option selected="" value="1">普通用户</option> <option value="0">系统管理员</option> </select> </xsl:if>
<xsl:if test="role[.='0']"> <select size="1" name="role" > <option value="1">普通用户</option> <option selected="" value="0">系统管理员</option> </select> </xsl:if>
</b></td> <td height="51" width="253"> </td> </tr> </xsl:for-each> </table> </center> </div> <p align="center"><input type="submit" value="确定" name="B1" οnclick="return User()"></input>     <input type="button" οnclick="history.go(-1)" value="返回" name="B3"></input></p> </form> <hr color="#FF9900" size="1" width="900"/>
</body>
</html>
</xsl:template> </xsl:stylesheet> |
对应的jsp
<%@ page contentType="text/html; charset=gb2312"language="java"%>
<!--声明tag标签库-->
<%@ taglib uri="/WEB-INF/emptld.tld" prefix="Tag" %>
<!--调用tag标签-->
<Tag:UserEdit xslUri="/xsl/UserEdit.xsl" xslCache="true"/>
对应的tld(emptld.tld)
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN"
"C:/web-jsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>college</shortname>
<uri></uri>
<!--2. 用户编辑修改页面(UserEdit) -->
<tag>
<name>UserEdit</name>
<tagclass>com.seavision.Employee_6_1.tag.UserEditTag</tagclass>
<bodycontent>JSP</bodycontent>
<attribute>
<name>xslUri</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>xslCache</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
</taglib>
对应的struts-config.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"C:/struts-config_1_1.dtd">
<struts-config>
<global-forwards>
<!--<forward name="logon" path="/jsp/login.htm"/>-->
<forward name="false" path="/jsp/failed.jsp"/>
<forward name="error" path="/jsp/error.jsp"/>
<forward name="logon" path="/jsp/false.jsp"/>
</global-forwards>
<!-- ========== Action Mapping Definitions ============================== -->
<action-mappings>
<action path="/jsp/UserEdit"
type="com.seavision.Employee_6_1.action.UserEditAction"
scope="request">
<forward name="success" path="/jsp/UserList.jsp"/>
<forward name="success1" path="/jsp/relogin.jsp"/>
</action>
</action-mappings>
</struts-config>
对应的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<display-name>fdf</display-name>
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>application</param-name>
<param-value>ApplicationResources</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>/Login.jsp</welcome-file>
<welcome-file>Login.jsp</welcome-file>
</welcome-file-list>
<!-- Application Tag Library Descriptor -->
<taglib>
<taglib-uri>/WEB-INF/emptld.tld</taglib-uri>
<taglib-location>/WEB-INF/emptld.tld</taglib-location>
</taglib>
</web-app>