Struts 1基础

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

<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

新建LoginAction extends Action在com.demo.action下重写execute方法(execute+alt+/ 选择第二个)

	@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;
	}

3、开发并配置LoginAction

新建类LoginForm extends ActionForm 在com.demo.form下

私有属性username,password和getter,setter方法;

重写reset方法(execute+alt+/ 选择第二个)

	@Override
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		//每次提交表单的时候都会调用一次
		this.username=null;
		this.password=null;
	}

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

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

部署登陆;

Struts 1基础

时间: 2024-10-07 13:26:39

Struts 1基础的相关文章

Struts 2基础知识

"计应134(实验班)林曙光" Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开. 工作原理: 体系结构: 当Web容器收到 请求(HttpServletRequest)它将请求传递给一个标准的的过滤链包括(ActionContextCleanUp)过滤器,然后经

(八)Struts标签基础

一.Struts标签分类 二.标签的使用 2.1 标签的主题 主题的设置与struts.xml中的常量<constant name="struts.ui.theme" value="xhtml" /> 决定. 每个主题都会对一些标签产生作用,而这些作用被定义在一些文件文件里,比如 checkbox.ftl这个文件定义的是对checkbox标签产生作用的语法. 主题共有以下几种(版本为struts2-core-2.3.14.jar): 路径为:struts

Struts 2 基础篇【转】

转载至 : http://www.blogjava.net/huamengxing/archive/2009/10/21/299153.html Struts2架构图 有视频讲解百度一下就可以找到了  我是在 私塾在线 看到的 (因为这里放链接处error所以就没上连接了) 请求首先通过Filter chain,Filter主要包括ActionContextCleanUp,它主要清理当前线程的ActionContext和Dispatcher:FilterDispatcher主要通过AcionMa

Spring+mybatis+struts框架整合的配置具体解释

学了非常久的spring+mybatis+struts.一直都是单个的用他们,或者是两两组合用过,今天总算整合到一起了,配置起来有点麻烦.可是配置完一次之后.就轻松多了,那么框架整合配置具体解释例如以下. 1.导入对应的jar包 由于我们建造的是maven的web项目,全部我们在pom.xml中须要导入这些包. pom.xml 具体凝视 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&q

【SSH进阶之路】深入源码,详解Struts基本实现流程

通过一步步的封装我们实现了Struts的基本雏形,我们解决了Struts怎么实现MVC的问题,我们现在仅仅有了Struts的基础,对Struts的学习才刚刚开始,这篇我们要通过对比MVC来理解Struts的执行流程,最后深入Struts的源码,一看究竟. MVC M:业务逻辑,业务数据可以重复使用,我们经常说的javabean(其实struts没有实现业务层,也无法实现) V:显示逻辑,同一份数据,对应多中显示方法,JSP代码实现 C:控制流程器,Servlet代码实现. 我们通过时序图看一下M

Struts框架

struts是一个基于MVC的Web开发框架.使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间.如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择. 那么学习struts首先就是要理解它的框架实现原理,以及如何搭建它的开发环境. 正如上所说,struts是基于MVC的,其框架原理如下: ActionServlet 是一个中央控制器,核心控制类,它与一般的servlet一样继承与HttpServlet. ActionF

Struts,Spring,Hibernate三大框架 面试题

Struts,Spring,Hibernate三大框架 1.Hibernate工作原理及为什么要用? 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Session 4.创建事务Transation 5.持久化操作 6.提交事务 7.关闭Session 8.关闭SesstionFactory 为什么要用: 1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码. 2. Hibernate是一个基于JDBC的主流持久化框架,

图解EJB工作流程

学习EJB需要对JNDI和RMI方面知识有一定的了解. JNDI为EJB提供命名和目录服务,实现不同目录位置的Bean的唯一标识. RMI为EJB提供远程访问能力,实现Bean的远程调用功能 在介绍Bean的工作流程之前,先熟悉一下RMI的工作流程 RMI设计的目标:实现运行在不同JVM中Java对象的调用 客户端通过JNDI服务获取Bean对象的接口,称为桩(stub) 一般情况下Bean对象并不希望被直接操控,比如针对不同客户端暴露不同接口,所以在JVM2上也提供一个对外接口,称为骨架(sk

lucene查询索引之Query子类查询——(七)

0.文档名字:(根据名字索引查询文档) 1. 提取获取InsexSearch 与 处理结果的公共代码 //IndexReader IndexSearcher public IndexSearcher getIndexSearcher() throws Exception{ // 第一步:创建一个Directory对象,也就是索引库存放的位置. Directory directory = FSDirectory.open(new File("D:\\temp\\index"));// 磁