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", "usernamepassword错误");
			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对模型组件的实现没有不论什么限制
一般为:[User]Biz接口、[User]BizImpl类、[User]DAO接口、[User]DAOHibImpl类

Struts执行过程


使用Struts HTML标签简化开发

index.jsp

<%@ 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>

实现显示用户列表功能
日期格式:yyyy年mm月dd日
状态:0 – 显示为“禁用”。 1 – 显示为“正常”

新建实体类User:
 四个属性username,password,birthday,status 默认构造方法,带參构造方法;

在LoginAction
登陆成功后设置UserList
List<User> userList = userBiz.getAllUser();
request.setAttribute("userList", userList);
模拟两个User 在UserBizImpl
	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>


部署登陆,成功显示;
http://pan.baidu.com/s/1mgsRkX6

posted on 2017-05-29 14:30  yjbjingcha  阅读(684)  评论(0编辑  收藏  举报

导航