Struts1框架轻易入门,经典示例

Struts1框架轻易入门,经典示例

版权申明:此文为作者原创,未经允许,请勿转载!

  • Struts工作原理及流程
  • 登录验证示例

Struts1 工作原理及流程

这是本人整理的一点材料,原理图为纯手工绘制,不喜勿喷,不足之处还望大家多多指点。

Struts1框架轻易入门,经典示例_第1张图片

1、读取配置
Struts框架总控制器(ActionServlet)就是一个Servlet,需要在web.xml中进行配置,在服务器加载之前会先加载web.xml配置文件,加载的同时会初始化ModuleConfig对象(下面的示例中有注释说明)。

2、提起请求
提交表单或调用URL操作都会提起一个请求,服务器接收到该请求后会判断该请求信息,如果提交对象是*.do,则将请求转发到ActionServlet。

3、填充数据
如果请求被转发到ActionServlet总控制器中,ActionForm(示例中写的类)会被实例化,此时HTTP请求中所包含的数据会被一一对应地填充到实例对象的字段中(所以要求ActionForm中的字段名必须与表单的一致,否则无法获得提交的数据),填充的数据将被保存到ServletContext中。

4、分配Action处理该请求
数据填充后,控制器会根据配置文件(struts-config.xml)中的配置信息将该请求分配到相对应的Action类进行处理。

5、处理请求
Action中必须包含一个execute()方法,负责调用执行相应的业务逻辑操作(业务逻辑的具体操作一般会封装到其他类)。执行完毕后返回ActionForward。

6、响应请求(返回关键字)
负责处理该请求的Action根据业务处理的不同结果返回一个目标响应对象给总控制器。

7、响应处理(返回响应结果)
总控制器根据具体业务功能Action控制器返回来的响应(关键字)做出响应处理。(如果不好理解请参照示例中的注释)

8、HTTP响应
将最终的响应返回给JSP,将结果页面展现给用户。



登录验证示例


web.xml配置文件


<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee                      
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    
    <servlet>
        <servlet-name>Actionservlet-name>
        <servlet-class>org.apache.struts.action.ActionServletservlet-class>
        
        <init-param>
            <param-name>configparam-name>
            <param-value>/WEB-INF/struts-config.xmlparam-value>
        init-param>
    servlet>

    
    <servlet-mapping>
        <servlet-name>Actionservlet-name>
        
        <url-pattern>*.dourl-pattern>
    servlet-mapping>

web-app>

struts-config.xml 框架配置文件






<struts-config>

    <form-beans>
        
        <form-bean name="loginForm" type="com.bean.LoginForm">form-bean>
    form-beans>

    
    <action-mappings>
        
        
        
        
        <action path="/login" type="com.action.LoginAction" name="loginForm">
            
            <forward name="ok" path="/ok.jsp">forward>
            <forward name="fail" path="/failed.jsp">forward>
        action>
    action-mappings>

struts-config>

login.jsp 登录页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    <form action="login.do" method="POST">
        用户名:<input type="text" name="userName"  >
        密    码:<input type="password" name="password">
        <input type="submit" value="提交">
    form>
body>
html>

LoginForm 表单数据填充类

package com.bean;

import org.apache.struts.action.ActionForm;


/**
 * @author zsh 
 * @Title LoginForm.java
 * @Description: 用于给Action填充数据,必须继承ActionForm类,否则不能填充数据到Action
 * @date 2016年8月17日 下午9:20:53 
 * @version V1.0 
 */
public class LoginForm extends ActionForm{
    private static final long serialVersionUID = 1L;
    private String userName;//接收表单数据,字段名必须与表单一致
    private String password;
    private String msg;//返回错误信息

    public String getMsg() {
        return msg;
    }


    public void setMsg(String msg) {
        this.msg = msg;
    }


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

LoginAction 登录验证Action

package com.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.bean.LoginForm;


/**
 * @author zsh 
 * @Title LoginAction.java
 * @Description: 用于验证用户登录的Action类(业务逻辑层)
 * @date 2016年8月17日 下午9:25:00 
 * @version V1.0 
 */
public class LoginAction extends Action{

    /**
     * Action类必须重写该方法
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        //将传进来的ActionForm对象向下转型,获得数据
        LoginForm user = (LoginForm) form;
        String userName = user.getUserName();
        String password = user.getPassword();
        //判断登录结果,并响应给Action
        if("zhang".equals(userName) && "123".equals(password))
            return mapping.findForward("ok");
        else
            return mapping.findForward("fail");
    }

}

登录成功(ok.jsp)和失败(failed.jsp)的页面请自行编写


目录

  • Struts1框架轻易入门经典示例
    • Struts1 工作原理及流程
      • 登录验证示例
      • 目录

你可能感兴趣的:(Struts)