SSH学习之Struts1入门的简单登陆案例。
来源:互联网 发布:淘宝支持微信付款吗 编辑:程序博客网 时间:2024/05/15 07:14
上一篇将博客将环境搭建起来了。
这篇博客将开始Struts1的基础学习。
1.先了解Struts1的工作流程:
服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存
。
以登录为例:第一次进login.jsp会先实例化Form、把默认值赋给表单元素。
输入用户名密码提交表单、提交到action属性的login.action,通过ActionServlet读struts-config.xml文件找到 action下的path属性找到.action,通过name属性找form-beans中的form-bean的name属性得到ActionForm的包名类名,先实例化form,把表单的值填充给form,调用form的validate方法验证、ActionErrors返回null表示验证通过,否则失败返回input指定的页面.验证通过会实例化Action,执行Action的execute方法。
2.Action, ActionForm, ActionForward ,这三个对象构成了Struts 的核心。
Struts 最核心的控制器是ActionServlet ,该Servlet 拦截用户请求,井将用户请求转入到Struts 体系内。
3.在web.xml中添加配置:
<servlet><!-- ActionServlet 的名 --><servlet-name>action</servlet-name><!-- 配置Servlet 的实现类 --><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><!-- 指定Struts 的第一个配置文件 --><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>detail</param-name><param-value>2</param-value></init-param><!-- 将ActionServlet配置成自启动Servlet --><load-on-startup>2</load-on-startup></servlet><servlet-mapping><servlet-name>action</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>
4.实现和配置ActionForm:
ActionForm必须继承Struts提供的ActionForm基类,该类只是一个简单的JavaBean,包含每个属性的get,set方法。
*属性名要与表单中的的name相同。
①实现:
@SuppressWarnings("serial")public class LoginActionForm extends ActionForm{private String userName;private String pswd;public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPswd() {return pswd;}public void setPswd(String pswd) {this.pswd = pswd;}}
②配置:新建web.xml文件中指定的struts-config.xml配置文件,并添加<form-beans>属性
<struts-config><form-beans><!-- 定义ActionForm,至少指定两个属性: name(自定义) , type LoginActionForm的路径 --><form-bean name="loginActionForm" type="com.example.LoginActionForm" /></form-beans></struts-config>
5.实现和配置Action:
继承struts提供的Action基类,实现ActionFoward类型的execute方法,返回一个ActionMapping的forward url。
Action是线程不安全的,因为所有的请求共享一个action实例。
①实现:
public class LoginAction extends Action {public ActionForward execute(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response)throws Exception {LoginActionForm lForm = (LoginActionForm) form;String userName = lForm.getUserName();String pswd = lForm.getPswd();if (userName.equals("") || pswd.equals("") || pswd == null|| userName == null) {userName = "admin";pswd = "admin";}if ("admin".equals(userName) && "admin".equals(pswd)) {return mapping.findForward("welcome");}return mapping.findForward("error");}}②配置:
<struts-config><!-- path:定义的路径;type:Action的路径;name:<form-beans>中定义的name,scope范围 --><action-mappings><action path="/login" type="com.example.LoginAction" name="loginActionForm"scope="request"><!-- 配置局部Forward --><forward name="welcome" path="/index.jsp" /><forward name="input" path="/login.jsp" /></action></action-mappings></struts-config>
6.配置forward,包含全局forward和局部forward的2种,局部如上所示,name是execute将要forward的url。
redirect:控制转发还是重定向。默认false 转发:RequestDispatch.forward,true重定向:HttpServletResponse.sendRedirects
全局forward:
<!--配置全局Forward对象 --><global-forwards><!--该Forward对象的name 属性为error. 映射资源为/WEB-INF/jsp/error.jsp --><forward name="error" path="/error.jsp" /></global-forwards>
7.整个struts-config.xml属性:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration1.2//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd"><struts-config><form-beans><!-- 定义ActionForm,至少指定两个属性: name(自定义) , type 路径 --><form-bean name="loginActionForm" type="com.example.LoginActionForm" /></form-beans><!--配置全局Forward对象 --><global-forwards><!--该Forward对象的name 属性为error. 映射资源为/WEB-INF/jsp/error.jsp --><forward name="error" path="/error.jsp" /></global-forwards><!-- path:定义的路径;type:Action的路径;name:<form-beans>中定义的name,scope范围 --><action-mappings><action path="/login" type="com.example.LoginAction" name="loginActionForm"scope="request"><!-- 配置局部Forward --><forward name="welcome" path="/index.jsp" /><forward name="input" path="/login.jsp" /></action></action-mappings></struts-config>
8.login.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body> <form action="login.do" method="post"> <p>用户名:</p><input name="userName" type="text"/><br> <p>密码:</p><input name="pswd" type="password"/> <br> <input type="submit" value="登陆" /> </form></body></html>
0 0
- SSH学习之Struts1入门的简单登陆案例。
- Struts2入门之登陆案例
- Struts1.X的快速入门案例
- SSH学习之Struts1深入学习
- Struts1简单登陆详解
- Struts1入门案例
- 学习ssh之ssh无密码登陆
- Struts1学习笔记(4)-----用Action表单创建登陆程序并简单的验证
- struts1学习之--3、实现简单的登录功能
- dojo1.1.0学习总结--简单登陆案例
- Ajax框架之DWR学习(简单入门案例)-yellowcong
- SSH框架之Struts的拦截器案例——登陆
- 简单的SSH入门
- SSH之Struts2框架--简单登陆模拟
- 一个简单的Servlet登陆案例
- SSH 免密码登陆的简单办法
- 最简单的ssh无密登陆
- iBaties的简单入门案例
- HDU 4505:小Q系列故事——电梯里的爱情【模拟】
- 第四周项目3:随机数函数用于游戏!
- Oracle取TOP N条记录
- [重写开源框架源码]HorizontalListView的滑动冲突解决
- Android中attrs.xml文件的使用详解
- SSH学习之Struts1入门的简单登陆案例。
- 在AI中如何合理的处理图像{太原UI设计师}讲
- 贝塞尔曲线与CAShapeLayer
- Struts2 doubleselect标签的使用
- FlowLayout
- JSON调试找不到 net.sf.ezmorph.Morpher与org/apache/commons/collections/map/ListOrderedMap这个异常。
- Mac OS X上删除“.svn”文件
- iOS开发——model类模板(过滤null和ID)
- [转]Android PopupWindow的使用和分析