(一)一个简单的Struts程序

来源:互联网 发布:网络教育报考公务员 编辑:程序博客网 时间:2024/05/16 02:03

一、Struts1.x介绍

      众所周知,Struts是JavaWeb开发中的常用框架,但是框架有什么用?Struts又充当什么角色呢?
      框架被设计出来,提高了代码的重用性,很多重复性的的底层操作都在框架中被封装好了,所以开发者只需要关注他的业务逻辑,开发效率就大大地提高了。
      JavaWeb开发中经常用到MVC模式,M是指Model(模型),专注于业务逻辑、数据的存储和处理等,V是View(视图),顾名思义就是在客户端能看到的页面,而C是指Control(控制),在模型层和视图层之间搭建一条桥梁。MVC模式结构清晰、层次分明、高内聚低耦合、重用性好等特性是它成为JavaWeb开发中的主流模式。
      Struts1.x在MVC中主要充当Control的角色,它既能调用模型层的操作,又能控制页面跳转,将数据传给前端页面。接下来,我们将要开始第一个Struts1.x程序。

二、Struts1.x程序的基本组成结构

1、ActionServlet:它是整个Struts框架的中央控制器,包括请求的接收、分发、处理和页面跳转及渲染。它是Struts自带的Servlet类,需要在web.xml中配置,并初始化config参数,这个参数指定struts配置文件的位置。

2、struts配置文件:是一个xml格式的文件,不配置的话默认是/WEB-INF/struts-config.xml。

3、ActionForm:封装、验证客户提交过来的表单数据,并传入Action中。

4、Action:用户自定义的Control类,需要继承Action类并重写execute方法,在execute方法里面进行逻辑代码的调用和处理,并返回ActionForward控制页面跳转。

5、ActionForward:根据配置文件的标签配置的数据,控制页面跳转。

三、一个简单的登录程序

1、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>    <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>    <servlet-name>action</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>

解析:
在这个文件中配置一个初始化的servlet,它是整个Struts1.x的中央控制器。它有一个config初始化参数,指定了struts配置文件的位置。它的映射是/。这里简析一下/和/的区别,/既可以控制页面跳转到CGI程序,即Action类,也可以控制页面跳转到.jsp等带有后缀的页面。但是/*只能控制页面跳转到Action,不能跳到前端页面。

2、struts配置文件

<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE struts-config PUBLIC        "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"        "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>    <form-beans>        <form-bean name="myForm" type="com.struts.form.LoginForm"></form-bean>    </form-beans>    <action-mappings>        <action path="/login" type="com.struts.action.LoginAction" name="myForm" input="/error.jsp">            <forward name="success" path="/success.jsp"></forward>            <forward name="fail" path="/login.jsp"></forward>        </action>    </action-mappings></struts-config>

解析:
“form-bean”标签是用来配置ActionForm的,用于接收客户端提交过来的数据,“action”标签是用来配置控制类的,即Action。这个标签中path属性配置用户请求Action所需要的路径;name属性是指这个Action用哪个ActionForm接收数据,在“form-bean”标签中有配置,填写“form-bean”标签中的name属性的值即可。“action”标签的子标签“forward”则控制页面跳转,与Action中excute的返回值ActionForward相呼应,“name”属性与ActionForward中的“forwardName”相呼应,“path”属性则是要跳转到的页面。

3、ActionForm

package com.struts.form;import com.struts.bean.Person;import org.apache.struts.action.*;import javax.servlet.http.HttpServletRequest;/** * Created by 程序猿 on 2017/5/15 0015. */public class LoginForm extends ActionForm {    private String account;    private String password;    public String getAccount() {        return account;    }    public String getPassword() {        return password;    }    public void setAccount(String account) {        this.account = account;    }    public void setPassword(String password) {        this.password = password;    }}

解析:
定义了全局属性和getter以及setter方法,用于封装用户提交过来的参数。用户提交过来的参数名要和属性名字一样。此外它还有validate方法,用于对用户提交的数据进行校验。这个放到以后再讲。

4、Action

package com.struts.action;import com.struts.form.LoginForm;import org.apache.struts.action.*;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Created by 程序猿 on 2017/5/15 0015. */public class LoginAction extends Action {    @Override    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {        LoginForm loginForm = (LoginForm) form;        if("1".equals(loginForm.getAccount()) && "2".equals(loginForm.getPassword())){            return mapping.findForward("success");        }        return mapping.findForward("fail");    }}

解析:
这个类主要处理业务逻辑,并进行页面跳转,通过mapping.findForward(“xxx”)跳转到struts配置中“forward”标签中指定的页面。

四、总结

一个简单的Struts登录程序就到此为止,透过这个程序中我们可以看到Struts开发中最基础的部分,也是必不可缺的部分,最后我们在捋一下思路。

  1. ActionServlet:Struts框架自带Servlet,在web.xml中配置,初始化参数指定struts配置文件的位置。它是整个Struts程序中的核心程序。
  2. struts配置文件(默认是/WEB-INF/struts-config.xml):根结点是“struts-config”标签,下一级结点中比不可缺的是actionform有关配置和action有关配置。
  3. ActionForm:封装客户端请求数据,全局属性名与客户端提交的参数名一样。

  4. Action:主要是execute方法,在里面处理业务逻辑,并返回ActionForward控制页面跳转。