struts1 与struts2 Action的配置实现

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";
		}
		
	}
}


 

 

 


 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值