MappingDispatchAction 类
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.MappingDispatchAction;
import com.tarena.biz.IllegalUserException;
import com.tarena.biz.UserBiz;
import com.tarena.entity.User;
/**
* 系统的核心功能,包括:
* 1)登录
* 2)退出
*
* MappingDispatchAction工作原理:
* 1)在配置的时候,为类中的每一个方法都指定一个<action>
* 通过parameter属性来指定方法的名称。
*
* 2)配置举例:
* <action parameter="login" path="/mapping/login" type="...MappingSystemAction">
* </action>
* <action parameter="logout" path="/mapping/logout" type="...MappingSystemAction">
* </action>
* 3)请求
* GET:
* <html:link action="/mapping/logout">logout</html:link>
* POST:
* <html:form action="/mapping/login">
* </html:form>
*/
public class MappingSystemAction extends MappingDispatchAction {
/**
* 系统的登录方法.
*/
public ActionForward login(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionForward forward = null;
// 获取登录表单中的数据
UserForm userForm = (UserForm) form;
String userName = userForm.getUserName();
String password = userForm.getPassword();
// 创建模型(业务)对象
UserBiz userBiz = new UserBiz();
// 执行业务方法处理请求的数据
User user = null;
try {
user = userBiz.find(userName, password);
} catch (IllegalUserException e) {
e.printStackTrace();
throw e;
}
// 根据业务的执行结果跳转到下一个页面
if (user != null) {
HttpSession session = request.getSession();
session.setAttribute("user", user);
forward = mapping.findForward("success");
} else {
forward = mapping.findForward("fail");
}
return forward;
}
/**
* 系统的退出方法.
*/
public ActionForward logout(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
HttpSession session = request.getSession();
session.invalidate();
return mapping.findForward("login");
}
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
UserForm类
package com.tarena.struts;
import org.apache.struts.validator.ValidatorForm;
@SuppressWarnings("serial")
public class UserForm extends ValidatorForm {
private String userName;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
validation.xml
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<formset>
<form name="userForm">
<field property="userName" depends="required">
<arg0 key="username" resource="false"/>
</field>
<field property="password" depends="required,minlength,maxlength">
<arg0 key="password" resource="false"/>
<arg1 key="${var:minlength}" resource="false" name="minlength"/>
<arg1 key="${var:maxlength}" resource="false" name="maxlength"/>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
<var>
<var-name>maxlength</var-name>
<var-value>10</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
struts-config.xml
<action path="/mapping/login" type="MappingSystemAction"
name="userForm" parameter="login" input="/mapping/login.jsp">
<exception key="errors.illegaluser" type="IllegalUserException" path="/error.jsp" />
<forward name="success" path="/mapping/success.jsp" redirect="true"/>
<forward name="fail" path="/mapping/fail.jsp" />
</action>
<action path="/mapping/logout" type="MappingSystemAction" parameter="logout">
<forward name="login" path="/mapping/login.jsp" redirect="true" />
</action>
<message-resources parameter="ApplicationResources" />
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property
property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
<!-- validator-rules.xml 由struts系统给-->
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
login.jsp
<%@page contentType="text/html;charset=gbk" %>
<%@taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<html>
<head>
<title>登录</title>
<html:javascript formName="userForm" />
</head>
<body>
<center>
<h3>欢迎使用本系统,请输入用户名和密码</h3>
<hr>
<html:form action="/mapping/login">
<%--
方法名已经在xml文件中说明
--%>
<table width="300" border="1" align="center">
<tr>
<td nowrap>用户名</td>
<td nowrap>
<html:text property="userName" />
</td>
</tr>
<tr>
<td nowrap>密码</td>
<td nowrap>
<html:password property="password" />
</td>
</tr>
</table>
<br>
<input type="submit" value="登录" onclick="return validateUserForm(this.form)">
</html:form>
<br>
<html:errors />
</center>
</body>
</html>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
success.jsp
<%@page contentType="text/html;charset=gbk" %>
<%@taglib prefix="html" uri="http://struts.apache.org/tags-html"%>
<html>
<head>
<title>成功</title>
</head>
<body>
<center>
<h3>登录成功</h3>
<hr>
welcome, ${user.userName}
<%--
方法名已经在xml文件中指定<action path="/mapping/logout" parameter="logout">
--%>
<html:link action="/mapping/logout">退出</html:link>
</center>
</body>
</html>
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
fail.jsp
<%@page contentType="text/html;charset=gbk" %>
<html>
<head>
<title>失败</title>
</head>
<body>
<center>
<h3>对不起,用户名不存在或密码不正确</h3>
<hr>
<a href="javascript:history.back()">返回</a>
</center>
</body>
</html>
分享到:
相关推荐
public class MyAction extends MappingDispatchAction { public String method1() { // 处理method1的业务逻辑 return "success"; } public String method2() { // 处理method2的业务逻辑 return "success...
Java 中 extends 与 implements 的区别 Java 中的继承和实现接口是两个基本概念,extends 和 implements 是两个关键字,它们之间的区别是 Java 编程语言中最重要的基础知识。 extends 的作用 在 Java 中,extends...
这个过程被称为“扩展”或使用关键字 `extends`。本教程将深入探讨如何在Java中使用 `extends` 关键字实现继承,并通过一个小的Java程序进行实践。 **一、继承的概念** 继承是一种代码重用机制,子类可以从父类那里...
flume-ng extends source jar flume-ng-extends-source-0.8.0.jar
在Java编程语言中,`extends`关键字用于实现类的继承机制。类的继承是面向对象编程的一个核心特性,它允许一个类(子类)继承另一个类(父类)的属性和方法,从而实现代码的复用和扩展。下面将详细探讨`extends`...
extends LinearLayout 实现侧滑菜单 要点: 1 FrameLayout布局的特性 2 对以下方法的理解: 2.1 Override computeScroll() 2.2 Scroller
Java extends 与 implements 的区别 在 Java 中,extends 和 implements 是两个关键字,都是用来建立类与类或类与接口之间的关系的,但它们的使用场景和实现机制却有着很大的不同。 extends extends 关键字用于...
import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFrame;...
经常发现有List、Set<? extends T>的声明,是什么意思呢?表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。
import java.awt.*; import java.applet.*; public class hao extends Applet { String s; //String s=null; public void init() { s="你好吗?"; }
ES6 类(Class)的继承(extends)和自定义存(setter)取值(getter)详解,博客地址: http://blog.csdn.net/pcaxb/article/details/53784309
在Java编程语言中,"implements"和"extends"是两个非常关键的关键词,它们用于类的继承和接口的实现,是面向对象编程的核心概念。理解并熟练运用这两个关键字对于掌握Java编程至关重要。 首先,让我们来看"extends...
详解 Vue 中 mixins 和 extends 的巧妙用法 在 Vue 中,mixins 和 extends 是两个重要的配置项,经常被用于组件的继承和扩展。在本文中,我们将详细介绍 Vue 中 mixins 和 extends 的巧妙用法。 mixins mixins 是...
public class findmin extends Applet implements ActionListener JavaAppliet程序,在文本框里输入三个数,显示最小数
Vue.js的核心特性之一是其灵活的组件系统,其中包括了Extends扩展选项用法,这一功能可以让开发者复用和继承组件的属性、方法和生命周期钩子等,从而提高开发效率和保持代码的一致性。 ### Vue.js Extends扩展选项...
泛型中extends和super的区别Java系列2021.pdf 在Java中,extends和super是两个重要的泛型通配符,它们用于限制类型参数的范围。了解它们的区别非常重要,否则可能会导致编程错误。 extends关键字 在泛型中,...
"JAVA中implement和extends的区别" JAVA中implement和extends是两个非常重要的关键字,它们都是用来实现继承和接口的,但是它们之间有着很大的区别。extends是继承父类,只要那个类不是声明为final或者那个类定义为...
`element-extends` 是一个扩展 Element UI 功能的插件,它在原生 Element UI 的基础上添加了一些额外的功能或优化,以满足更多开发需求。 `vue-element-extendsDemo.zip` 文件包含了一个使用 `vue-element-extends`...
extends T>的声明,是什么意思呢?<? super T>表示包括T在内的任何T的父类,<? extends T>表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。 extends List<? extends Number...