Struts1:
struts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
<struts-config>
<data-sources />
<form-beans>
<form-bean name="adminForm" type="com.usernet.product.web.form.AdminForm" />
</form-beans>
<global-forwards>
<forward name="admin_msg" path="/admin/admin_msg.jsp" />
</global-forwards>
<!-- 指定action来执行的这个表单 -->
<action-mappings>
<action path="/admin" scope="request" parameter="method" name="adminForm"
type="com.usernet.product.web.action.AdminAction">
<forward name="success" path="/admin/index/index.jsp" />
<forward name="error" path="/admin/login_error.jsp" />
<forward name="logout" path="/admin/login.jsp" redirect="true" />
<forward name="password" path="/admin/page/admin_password.jsp" />
<forward name="list" path="/admin/page/admin_list.jsp" />
<forward name="add" path="/admin/page/admin_add.jsp" />
<forward name="update" path="/admin/page/admin_update.jsp" />
<forward name="other" path="/admin.do?method=toList"
redirect="true" />
</action>
</action-mappings>
<message-resources parameter="resources" />
</struts-config>
AdminForm:
package com.usernet.product.web.form;
import com.usernet.product.comm.BaseForm;
import com.usernet.product.entity.Admin;
public class AdminForm extends BaseForm {
private static final long serialVersionUID = 1L;
private Admin admin = new Admin();
private String pageNo;
private String pageSize;
public String getPageNo() {
return pageNo;
}
public void setPageNo(String pageNo) {
this.pageNo = pageNo;
}
public String getPageSize() {
return pageSize;
}
public void setPageSize(String pageSize) {
this.pageSize = pageSize;
}
public Admin getAdmin() {
return admin;
}
public void setAdmin(Admin admin) {
this.admin = admin;
}
}
adminAction的实现:
public class AdminAction extends BaseAction {
long time0 = 0;
public ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
String loginName = request.getParameter("loginName");
String password = ProductUtils.getMD5String(request
.getParameter("password"));
String ip = ProductUtils.getIpAddr(request);
LoginError loginError = loginErrorDao.getByParam(loginName, ip,
ProductConfig.LOGIN_FLAG_MANAGE);
int ret = 0;
ret = adminDao.login(loginName, password);
// }
// else {
// ret = -3;
// }
if (ret == -1) {
request.setAttribute("error", "用户名不存在");
return mapping.findForward("error");
} else if (ret == -2) {
// 错误次数验证
if (loginError != null
&& loginError.getCount() >= ProductConfig.MAX_LOGIN_ERROR_COUNT) {
// 锁定用户
adminDao.lockUser(loginName);
request.setAttribute("error", "密码错误"
+ ProductConfig.MAX_LOGIN_ERROR_COUNT + "次,帐号被锁定");
//重定向到error
return mapping.findForward("error");
} else {
int count = 1;
if (loginError != null) {
loginError.setCount(loginError.getCount() + 1);
count = loginError.getCount();
loginError
.setTime(new Timestamp(System.currentTimeMillis()));
loginErrorDao.modify(loginError);
} else {
loginError = new LoginError();
loginError.setLoginName(loginName);
loginError.setIp(ip);
loginError.setFlag(ProductConfig.LOGIN_FLAG_MANAGE);
loginError.setCount(1);
loginError.setStatus(0);
loginError
.setTime(new Timestamp(System.currentTimeMillis()));
loginErrorDao.save(loginError);
}
request.setAttribute("error", "密码错误" + count + "次");
return mapping.findForward("error");
}
} else if (ret == -3) {
request.setAttribute("error", "用户状态不可用");
return mapping.findForward("error");
} else {
// 清除错误登录信息
loginErrorDao.cleanLoginError(loginName,
ProductConfig.LOGIN_FLAG_MANAGE);
Admin admin = (Admin) adminDao.getById(Admin.class, ret);
// 添加日志
ProductUtils.addAdminLog(request, loginName, LogConstants.login,
null);
request.getSession().setAttribute("admin", admin);
}
return mapping.findForward("success");
}
public ActionForward logout(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
Admin admin = (Admin) request.getSession().getAttribute("admin");
// 添加日志
ProductUtils.addAdminLog(request, admin.getLoginName(),
LogConstants.logout, null);
request.getSession().removeAttribute("admin");
return mapping.findForward("logout");
}
public ActionForward toList(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
AdminForm mForm = (AdminForm) form;
PageResult<Admin> result = null;
Page page = new Page();
// 分页信息
String pageNo = mForm.getPageNo();
String pageSize = mForm.getPageSize();
if (pageSize != null) {
page.setEveryPage(Integer.parseInt(pageSize.trim()));
}
if (pageNo != null) {
page.setCurrentPage(Integer.parseInt(pageNo.trim()));
}
result = adminDao.getAllByPage(page);
request.setAttribute("form", mForm);
request.setAttribute("list", result.getContent());
request.setAttribute("page", result.getPage());
request.setAttribute("size", result.getSize());
return mapping.findForward("list");
}
public ActionForward toPassword(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
return mapping.findForward("password");
}
/** 修改密码 */
public ActionForward doPassword(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
String password1 = request.getParameter("password");
String password2 = request.getParameter("password1");
Admin admin = (Admin) request.getSession().getAttribute("admin");
if (!admin.getPassword().equals(ProductUtils.getMD5String(password1))) {
request.setAttribute("msg", "原密码不正确");
request.setAttribute("return", "admin.do?method=toPassword");
return mapping.findForward("admin_msg");
} else {
admin.setPassword(ProductUtils.getMD5String(password2));
if (adminDao.modify(admin)) {
// 添加日志
ProductUtils.addAdminLog(request, admin.getLoginName(), String
.format(LogConstants.update_password, new Object[] {
admin.getId(), admin.getLoginName() }), null);
request.getSession().setAttribute("admin", admin);
request.setAttribute("msg", "修改成功");
request.setAttribute("return", "admin.do?method=toPassword");
return mapping.findForward("admin_msg");
} else {
request.setAttribute("msg", "修改失败");
request.setAttribute("return", "admin.do?method=toPassword");
return mapping.findForward("admin_msg");
}
}
}
/** 删除用户 */
public ActionForward doDelete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
int id = Integer.parseInt(request.getParameter("id"));
Admin admin = (Admin) adminDao.getById(Admin.class, id);
if (adminDao.delete(admin)) {
// 添加日志
ProductUtils.addAdminLog(request, admin.getLoginName(), String
.format(LogConstants.delete_manager, new Object[] {
admin.getId(), admin.getLoginName() }), null);
return mapping.findForward("other");
} else {
request.setAttribute("msg", "删除失败");
request.setAttribute("return", "admin.do?method=toList");
return mapping.findForward("admin_msg");
}
}
/** to添加用户 */
public ActionForward toAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
return mapping.findForward("add");
}
/** to修改用户 */
public ActionForward toUpdate(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
int id = Integer.parseInt(request.getParameter("id"));
Admin admin = (Admin) adminDao.getById(Admin.class, id);
request.setAttribute("admin", admin);
return mapping.findForward("update");
}
/** 添加用户 */
public ActionForward doAdd(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
String loginName = request.getParameter("loginName").trim();
boolean bool = adminDao.checkLoginName(loginName);
if (bool) {
request.setAttribute("msg", "登录名已经存在");
request.setAttribute("return", "admin.do?method=toAdd");
return mapping.findForward("admin_msg");
}
String password = request.getParameter("password");
String email = request.getParameter("email");
int flag = Integer.parseInt(request.getParameter("flag"));
Admin admin = new Admin();
admin.setLoginName(loginName);
admin.setPassword(ProductUtils.getMD5String(password));
admin.setEmail(email);
admin.setStatus(0);
admin.setFlag(flag);
admin.setTime(new Timestamp(System.currentTimeMillis()));
int id = adminDao.save(admin);
if (id > 0) {
ProductUtils.addAdminLog(request, admin.getLoginName(), String
.format(LogConstants.add_manager, new Object[] { id,
admin.getLoginName() }), null);
request.setAttribute("msg", "添加成功");
} else {
request.setAttribute("msg", "添加失败");
}
request.setAttribute("return", "admin.do?method=toList");
return mapping.findForward("admin_msg");
}
/** 修改用户 */
public ActionForward doUpdate(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException {
int id = Integer.parseInt(request.getParameter("id"));
String password = request.getParameter("password");
String email = request.getParameter("email");
int flag = Integer.parseInt(request.getParameter("flag"));
Admin admin = (Admin) adminDao.getById(Admin.class, id);
admin.setPassword(ProductUtils.getMD5String(password));
admin.setEmail(email);
admin.setFlag(flag);
if (adminDao.modify(admin)) {
ProductUtils.addAdminLog(request, admin.getLoginName(), String
.format(LogConstants.update_manager, new Object[] {
admin.getId(), admin.getLoginName() }), null);
request.setAttribute("msg", "修改成功");
} else {
request.setAttribute("msg", "修改失败");
}
request.setAttribute("return", "admin.do?method=toList");
return mapping.findForward("admin_msg");
}
/*
* 锁定用户
*/
public ActionForward doCancle(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
int userId = Integer.parseInt(request.getParameter("id"));
Admin admin = (Admin) adminDao.getById(Admin.class, userId);
admin.setStatus(1);// 不可用
if (adminDao.modify(admin)) {
ProductUtils.addAdminLog(request, admin.getLoginName(), String
.format(LogConstants.lock_manager, new Object[] {
admin.getId(), admin.getLoginName() }), null);
}
return mapping.findForward("other");
}
/*
* 解锁用户
*/
public ActionForward doOk(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
int userId = Integer.parseInt(request.getParameter("id"));
Admin admin = (Admin) adminDao.getById(Admin.class, userId);
admin.setStatus(0);// 解锁
if (adminDao.modify(admin)) {
ProductUtils.addAdminLog(request, admin.getLoginName(), String
.format(LogConstants.unlock_manager, new Object[] {
admin.getId(), admin.getLoginName() }), null);
}
return mapping.findForward("other");
}
}
Struts2:
struts.xml:定义Action时,至少要定义Action的name和class属性。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3..dtd">
<struts>
<!-- Struts2的action必须要在package里配置-->
<package name="default" extends="struts-default">
<!--定义处理的action-->
<action name="register=" class="action.RegisterAction">
<!--execute方法返回success时,重定向-->
<result name="success"> /WEB-INF/login.jsp </result>
<result name="input"> /WEB-INF/register.jsp </result>
</action>
</package>
</struts>
Struts 2 与struts 1 相比,最大的改进之一就是Action类,在struts1中,Action类要求必须实现Action接口,而在Struts2中虽然有Action接口,但不要求实现。只要一个包含execute方法的POJO类就可以作为Struts2的Action类,Struts2的Action类还相当于Struts1的ActionForm类,可以在里面实现getter和setter方法。
public class RegisterAction
{
private String username;
private String password;
private String email;
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public String getEmail()
{
return email;
}
public void setEmail(String email)
{
this.email = email;
}
//出来用户请求的execute方法
public String execute() throws Exception
{
if(getUsername().equals("bill")))
{
return "input";
}else{
return "success";
}
}
}