以一个简单的登录的例子来演示如何搭建struts1环境

本例先讲解struts1的工作流程,然后举一个用户登录的例子做演示。


struts1的工作流程:

struts1是MVC模型的经典应用,以前对MVC的模型理解有错,一直以为C,也就是Control是做业务逻辑的,也就是业务逻辑都是由servlet做的,而JavaBean只起到一个模型的作用,但是到后来,听老师讲课才知道是我理解错了,也是老师之前给举的例子误导了我,到现在学习了struts1,才终于看透了Control的作用,也就是servlet仅仅是起到一个控制流程的作用,具体的后台的逻辑处理,是由Bean来做的。


在struts1中,servlet这个类已经不用我们动手去写了,别人已经给我们写好了,叫做ActionServlet,我们只需要导入ActionServlet所在的包就可以了。而我们所做的具体的控制工作,则相应的转换到一个配置文件——struts-config.xml 中。也就是我们要通过配置struts-config.xml文件,来起到控制的作用,就好像这个文件是servlet的接口。以前做控制的工作我们都是直接写servlet类的,现在我们做控制工作,是在struts-config.xml文件中。这点一定要绕过来,不然就不好理解struts1的工作流程了。


在struts1中,起M(Model)作用的是一个叫做ActionForm的类,也就是这个类充当了JavaBean的角色。


在struts1中,做业务处理的是一个叫做Action的类,其中有一个execute()方法,我们的逻辑处理都是在这个方法中做的,严格上来说这也是一个JavaBean。


另外,jsp页面,仍然起着V(View)的作用。


下面具体说一下struts-config.xml配置文件,因为这个是由以前我们写的MVC模型“升级”到struts1中,变化最大的地方。


它是怎么起控制作用的呢?其实这得从struts1的工作流程说起。


举登录的例子来说:

我们填写好用户名和密码的表单,会提交到ActionServlet中,ActionServlet会根据表单中的提交地址,也就是action所指定的参数,在struts-config.xml中查找对应的Action,从而调用Action做相应的业务处理,处理完后,Action会返回一个ActionForward对象到struts-config.xml中,指定处理结果的去向,这个去向可以是jsp页面,也可以是另一个Action。


也许你会疑惑,表单提交的时候,action不是只能指定一个提交地址吗?怎么会即提交到ActionServlet又指定某个Action呢?其实这里也是struts1的又一个特点。我们以前写的提交地址直接写servlet的url或是某个jsp的页面,但是在struts1中,这个提交地址会有些变化,习惯的,这个提交地址写成action="actionpath.do",点号前面指定的是某个具体的Action的path,也就是url,指明了这个表单想要由哪个Action来处理,点号后面加个do,是为了这个表单能够提交到ActionServlet,因为在web.xml中,ActionServlet的url-pattern写成了“*.do”。其实这里可以这样理解,就是ActionServlet起到一个过滤器的作用,捕捉所有url后缀有.do的页面。



下面就以一个简单的登录的例子,说明来看一下如何搭建struts1,并且理清一下struts1的工作流程:

1、新建一个web工程:struts1


2、在lib目录下导入所需的jar包,其中就包含上面提到的ActionServlet所在的包。(这些包当然要到Apache官网上去下载了,我用的版本是struts-1.3.10)

下载下来,解压缩,在apps目录下,有一个struts-blank-1.3.10.war文件,这是一个空的工程,也就是只搭建起来了struts1的框架,把这个文件用压缩软件打开,把struts-blank-1.3.10.war\WEB-INF\lib下的所有jar包复制到我们的工程的lib目录下。我们的ActionServlet类就在struts-core-1.3.10.jar这个包中。


3、导入包之后,我们来配置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>
    
    <load-on-startup>0</load-on-startup><!--在开启服务器的时候,加载这个类 -->
  </servlet>

  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern><!--这里的意思是过滤所有以.do做后缀的请求页面-->
  </servlet-mapping>


4、创建ActionForm类:

package com.suo.ActionForm;

import org.apache.struts.action.ActionForm;

public class User extends ActionForm 
{
	private String userName;
	private String password;
	
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
}

User继承自ActionForm,其实就是一个JavaBean。


5、创建Action类:

package com.suo.Action;

import javax.servlet.http.*;
import org.apache.struts.action.*;
import com.suo.ActionForm.User;

public class Treate extends Action
{
	public ActionForward execute(
            ActionMapping mapping,//映射对象,封装了struts-config.xml与Action之间的映射关系
            ActionForm form,//即表单对象,在ActionServlet中,会将用户提交的表单信息,自动封装成ActionForm对象。
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception {
		
		User user=(User)form;//进行一下强制类型转换
		
		if(user.getUserName().equals("suo") && user.getPassword().equals("123"))
		{
			return mapping.findForward("success");
		}
		else
			return mapping.findForward("error");//返回ActionForward对象,指定用哪个页面或是Action处理结果
    }
}


6、创建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">
          
<struts-config>

	<form-beans>
		<form-bean name="login" type="com.suo.ActionForm.User"></form-bean>
	</form-beans>
	
	<action-mappings>
		<action name="login" path="/treate" type="com.suo.Action.Treate">
			<forward name="error" path="/user/error.jsp"></forward>
			<forward name="success" path="/user/success.jsp"></forward>
		</action>	
	</action-mappings>
	
</struts-config>
有必要说一下配置文件中的对应关系:

<form-beans/>对应的是JavaBean,type指定的具体的类。

<action-mapping/>中的<action>对应的是某一个具体的Action,path指定访问这个Action时的路径,也就是url,type是指定这个Action的类文件。记住<forward>要写在<action>中。

<form-beans/>中某一个<form-bean/>的name要和其相对应的<action>的name一致。


至此,struts1环境就搭建好了!




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值