Struts1基础、使用Struts实现登录、使用Struts HTML标签简化开发
Struts 1基础
为什么重拾Struts 1
曾经是最主流的MVC框架
市场份额依然很大
很多遗留系统中依旧使用
维护和升级都需要熟悉Struts 1
与Struts 2相比
编码、配置繁琐
侵入性强
例子:使用Struts实现登录
登录失败
返回登录页面,提示失败
登录成功
保存当前登录用户到Session
转到成功页面,显示欢迎信息
开发步骤:
1、添加Struts到项目
添加jar包和struts-config.xml
在web.xml中配置ActionServlet
2、开发并配置ActionForm
3、开发并配置LoginAction
4、创建并编写页面
5、调试运行
新建web project项目:Struts1Demo
右击项目添加struts1支持
配置struts-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <!-- 在/org/apache/struts/resources/struts-config_1_3.dtd 第24行 --> <struts-config> <!-- Form --> <form-beans > <form-bean name="userLoginForm" type="com.demo.form.LoginForm"></form-bean> </form-beans> <!-- Action --> <action-mappings > <action name="userLoginForm" path="/login" type="com.demo.action.LoginAction" scope="request"> <forward name="success" path="/success.jsp"></forward> <forward name="input" path="/index.jsp"></forward> </action> </action-mappings> </struts-config>
在web.xml中配置ActionServlet
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
</servlet>
2.开发并配置ActionForm
新建类LoginForm extends ActionForm 在com.demo.form下
私有属性username,password和getter,setter方法;
重写reset方法(输入execute 按alt+/ 选择参数有 HttpServletRequest)
@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
//每次提交表单的时候都会调用一次
this.username=null;
this.password=null;
}
3、开发并配置LoginAction
新建LoginAction extends Action在com.demo.action下,重写execute方法(输入execute 按alt+/ 选择参数有 HttpServletRequest)
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
//做登陆
ActionForward af = null;
LoginForm lf = (LoginForm) form;
UserBiz userBiz = new UserBizImpl();
if(userBiz.login(lf.getUsername(),lf.getPassword())){
//登陆成功
request.getSession().setAttribute("loginUser", lf.getUsername());
//跳转
//mapping 是配置文件struts-config.xml的 action-mapping
af=mapping.findForward("success");
}else{
request.setAttribute("message", "用户名密码错误");
af=mapping.findForward("input");
}
return af;
}
新建UserBiz接口和它的实现类UserBizImpl添加login方法:
public boolean login(String username, String password) {
//直接用模拟,不访问数据库
if("admin".equals(username)&&"admin".equals(password)){
return true;
}else
return false;
}
4、创建并编写页面
index.jsp
<body>
<font color="red">${message }</font>
<form action="login.do" method="post">
<table>
<tr>
<td>用户名</td>
<td><input name="username"/> </td>
</tr>
<tr>
<td>密码:</td>
<td><input name="password" type="password"/> </td>
</tr>
<tr>
<td><input type="submit" value="登陆"/> </td>
<td><input value="重置" type="reset"/> </td>
</tr>
</table>
</form>
</body>
success.jsp
<body>
欢迎:${loginUser }登陆!
</body>
5、调试运行
Struts对MVC的实现
Struts核心组件
控制器组件
ActionServlet
1. 由Struts提供:org.apache.struts.action.ActionServlet
2. 本身是一个Servlet,需要在web.xml中配置
Action -- Action Bean
1. 封装某一类客户操作,如:登录、注销
2. 需要在struts-config.xml中配置
3. 继承自org.apache.struts.action.Action,实现execute方法
4. execute方法的参数
mapping
form
request、response
5. execute方法的返回值类型:ActionForward
视图组件
ActionForm -- Form Bean
1) 封装页面提交的数据
2) 继承自org.apache.struts.action.ActionForm
3) 需要在struts-config.xml中配置
4) 从页面获得输入- 属性与表单域name属性值一致
loginForm.getUsername();
loginForm.getPassword();
其他视图组件:
JSP、JSTL、EL、自定义标签
Struts标签
模型组件
使用Struts HTML标签简化开发
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html:form action="login" method="post"> <table> <tr> <td>用户名</td> <td><html:text property= "username" /></td> </tr> <tr> <td>密码:</td> <td><html:password property= "password" /></td> </tr> <tr> <td><html:submit value="登陆" /></td> <td><html:reset value="重置" /></td> </tr> </table> </html:form>
状态:0 – 显示为“禁用”, 1 – 显示为“正常”
新建实体类User:
四个属性username,password,birthday,status 默认构造方法,带参构造方法;
在LoginAction
登陆成功后设置UserList
List<User> userList = userBiz.getAllUser();request.setAttribute("userList", userList);
public List<User> getAllUser() {
List<User> userList = new ArrayList<User>();
userList.add(new User("admin", "admin", new Date(), 1));
userList.add(new User("admin1", "admin1", new Date(), 0));
return userList;
}
在success.jsp
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html" %> <%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean" %> <%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic" %>
Body里面:
<body>
欢迎:${loginUser }登陆!
<table border="1px" >
<thead>
<tr>
<th>用户名</th>
<th>生日</th>
<th>状态</th>
</tr>
</thead>
<tbody>
<!-- 结合name和property属性查找JavaBean -->
<logic:iterate id="u" name="userList">
<tr>
<td>
<!-- bean:write标签用于输出页面输出 -->
<bean:write name="u" property="username"/>
</td>
<td>
<bean:write name="u" property="birthday" format="yyyy-MM-dd"/>
</td>
<td>
<!-- <bean:write name="u" property="status" format="#,###"/> -->
<logic:equal value="1" name="u" property="status">正常</logic:equal>
<logic:equal value="0" name="u" property="status">禁用</logic:equal>
</td>
</tr>
</logic:iterate>
</tbody>
</table>
</body>
部署登陆,成功显示;
Struts1基础、使用Struts实现登录、使用Struts HTML标签简化开发的更多相关文章
- SSH框架之Struts(4)——Struts查漏补缺BeanUtils在Struts1中
在上篇博客SSH框架之Struts(3)--Struts的执行流程之核心方法,我们提到RequestProcessor中的processPopulate()是用来为为ActionForm 填充数据.它 ...
- Struts1入门实例(简单登录)
Struts1入门实例(简单登录) 现在开始加入公司的核心项目,但由于项目开发比较早,所以使用的技术不是很新潮,前台用的还是struts1. 虽然不是什么新技术,但仍可以从中学到好多东西的.花了一个晚 ...
- struts(二)——struts框架实现的基本原理
上一篇文章,我们介绍了MVC框架的基本原理,并指出了这个基本框架中存在大量if…else的问题.今天我们来介绍一下struts框架,让struts解决这个问题. 首先,看一下粗略的时序图: Actio ...
- 【转】Struts1.x系列教程(6):Bean标签库
转载地址:http://www.blogjava.net/nokiaguy/archive/2009/01/archive/2009/01/archive/2009/01/archive/2009/0 ...
- Struts1应用、实现简单计算器、使用DispatchAction、显示友好的报错信息、使用动态Form简化开发
实现简单的支持加.减.乘.除的计算器 复制一份Struts1Demo修改:Struts1Calc 方案1: Struts1Calc 创建ActionForm: CalcForm extends Act ...
- Android基础新手教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP
Android基础新手教程--1.2.1 使用Eclipse + ADT + SDK开发Android APP 标签(空格分隔): Android基础新手教程 1.前言 这里我们有两条路能够选,直接使 ...
- 少量代码设计一个登录界面 - .NET CORE(C#) WPF开发
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. 少量代码设计一个登录界面 - .NET CORE(C#) WPF开发 阅读导航 本文背景 代码 ...
- struts json登录
1.struts.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts P ...
- Ajax+Struts做登录判断
Action类里: /* * 登录 */ public ActionForward doLogin(ActionMapping mapping,ActionForm form,HttpServletR ...
随机推荐
- Centos常用命令之:VI
在Linux中,对文件内容的编辑莫过去vi命令了,它是每个发布版本中的标配.并且功能强大. 在vi中一共有三种模式,一般模式(命令参照),编辑模式(命令参照)与命令模式(命令参照). ◇一般模式:当我 ...
- Scrapy命令行基本用法
1.创建一个新项目: scrapy startproject myproject 2.在新项目中创建一个新的spider文件: scrapy genspider mydomain mydomain.c ...
- [HAOI 2011]Problem b
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- NOIWC2018 游记
day1 上午是自习,做了一些杂题,看了一下ppt,中午准备了一下行李,就出发了,提前了一个小时,谁知道被坑爹导航弄得居然到晚了一点 当走到这里的时候我愣住了 纠结了一分钟,直到有个boy走了进去,我 ...
- 注意类型转换——Effective C++
注意类型转换: C++提供了四种新式类型转换: const_cast<T>(expression); static_cast<T>(expression); dynamic_c ...
- 【BZOJ3110】【ZJOI2013】k大数查询
原题传送门 题意简析 给定一个区间,可以在这个区间上每个整数点插入若干个数(这些数数值可以重复)你需要支持2种操作: 1)在[a,b]间所有整数点插入c 2)查询[a,b]内第c大的数 解题思路 树套 ...
- 【Codeforces Round #430 (Div. 2) A C D三个题】
·不论难度,A,C,D自己都有收获! [A. Kirill And The Game] ·全是英文题,述大意: 给出两组区间端点:l,r,x,y和一个k.(都是正整数,保证区间不为空),询问是否 ...
- sql server 表分区
背景: 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在不同的 ...
- Vue2学习(1)
学习Vue2的computed 属性和 watcher 主要将computed 和methods和watcher作比较,对其各自的相关优缺点作了介绍. computed 属性会基于它所依赖的数据进行缓 ...
- class-map与policy-map 配置与qos模版
将subnet-a 与subnet-b 归入类class1 中.Router1(config)# ip access-list extended subnet-a Router1(config-std ...