Action:单实例(单例),多线程使用时如果有可以修改的成员属性要注意线程安全
ActionForm一般是粗粒度的,一般一个模块对应一个ActionForm
Action:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginActionForm laf = (LoginActionForm)form;
String username = laf.getUsername();
String password = laf.getPassword();
// if ("admin".equals(username) && "admin".equals(password)) {
// //转向到登录成功页面
// request.setAttribute("username", username);
// return mapping.findForward("success");
// }else {
// //转向到登录失败页面
// return mapping.findForward("error");
// }
String errorInfo = "";
try {
UserManager.getInstance().login(username, password);
//request.setAttribute("username", username);
return mapping.findForward("success");
}catch(UserNotFoundException unfe) {
unfe.printStackTrace();
errorInfo = "用户不能找到,用户名称=[" + username + "]";
}catch(PasswordErrorException pee) {
pee.printStackTrace();
errorInfo = "密码错误";
}
request.setAttribute("errorinfo", errorInfo);
return mapping.findForward("error");
}
ActionForm 两个属性:username password
注意ActionForm里面的两个方法:
方法/**
* 每次收集数据都调用
*/
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
System.out.println("----------LoginActionForm.reset()-----------");
}
/**
* 每次收集数据都调用
*/
@Override
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
System.out.println("----------LoginActionForm.validate()-----------");
return null;
}
配置文件:
<form-beans>
<form-bean name="loginForm" type="com.aowin.struts.LoginActionForm"/>
</form-beans>
<!-- path:访问路径 ,必须以/开头 服务器端很多都必须以/开头,Servlet也是
name:用哪个ActionForm
scope:默认sessino 不要放到session 因为这个对象用完就没了.
默认是session
一个Action对应一个ActionMapping实例
validate:默认true
-->
<action-mappings>
<action path="/login"
type="com.aowin.struts.LoginAction"
name="loginForm"
scope="request"
validate="true"
>
<forward name="success" path="/login_success.jsp" />
<forward name="error" path="/login_error.jsp"/>
</action>
</action-mappings>
页面可以取ActionForm的value
<body>
<%
LoginActionForm laf = (LoginActionForm)request.getAttribute("loginForm");
%>
<%=laf.getUsername() %>,登录成功
</body>
假如的struts1的jar:参照发行包里的空项目
分享到:
相关推荐
Struts2_学习笔记Struts2_学习笔记Struts2_学习笔记
Struts2_学习笔记
学习Struts2第三天笔记
20110930_Struts2_0100_Introduction20110930_Struts2_0100_Introduction20110930_Struts2_0100_Introduction20110930_Struts2_0100_Introduction20110930_Struts2_0100_Introduction
学习Struts2第四天笔记
Struts_学习笔记之ActionForm,简单配置即可达到效果
Struts 2.1.8 学习源码内容 Struts2_01FirstDemo : 跑通第一个Struts2的实例 Struts2_02CURD : 关于Struts2的增、删、改和查 实际业务中数据来自数据库,从DAO层查询,本实例使用静态资源的方式模拟, 主要是关于...
20110930_struts_login20110930_struts_login20110930_struts_login20110930_struts_login20110930_struts_login20110930_struts_login20110930_struts_login20110930_struts_login
Struts2_Action学习笔记、通配符{1},{2}......
传智2016的视频配套struts2_day03讲义struts2_day03讲义struts2_day03讲义
传智2016框架视频配套讲义----struts2_day04讲义.pdf ,需要的下载了
著名的K8_Struts2_漏洞利用工具,可利用Struts2_漏洞进行任意代码执行和任意文件上传。 本工具仅供学习交流,请勿用于任何非法活动。
Struts2_hibernate_spring学习笔记,郑大刘铭皓老师课堂笔记
Struts2_0100_Introduction
Struts2_0100_Hell0
OGNL是通常要结合Struts 2的标志一起使用,如等。大家经常遇到的问题是#、%和$这三个符号的使用。下面我想通过例子讲述这个问题: 首先新建名为Struts2_OGNL的Web工程,配置开发环境。之前很多朋友在使用Struts 2的...
[轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发
学习Struts2第一天的笔记
使用struts的中文api.看不懂英文的朋友..抓紧下了.