Struts1的快速入门

  • Post author:
  • Post category:其他




struts 1.3.X



前言:

在目前来看基于struts 的项目基本上,已经被淘汰并消失到了历史的长河中,各种培训也在宣扬spring全家桶。

但是总是有那么一个时候,进入了一个不大不小的公司,给你一个十年前的老项目,这个时候,不要痛苦,学习老技术也是理解开发过程的一种途径。

正巧题主现在就遇上了这种问题,一个金融类的10多年的项目,正好学习了解下古老的Struts1.



struts 1.3.X 下载


下载struts的JAR包路径



注:在下载页面的下方会有struts1.3.X的版本的jar包



基础入门



概念:

  • struts是一个基于mvc的web框架。

    • mvc是一种模式也是一种思想,我们会把数据的输入(例:jsp界面)、数据的处理(靠控制端接受数据后,调用model来完成处理)、数据的显示(返回到jsp页面上进行显示)
    • struts是基于mvc的架构为了简化开发而提出的一种规范,

      • 好处:提高程序的可读性,和规范。
      • 坏处:约束 了程序的自由,也约束了程序员。


原理:
  • 以一个用户登录为例子,来进行举例说明。

  • 在这里插入图片描述

  • 以用户登录模块验证来演示

    • 我们使用手动配置的方式来实现

      1. 创建web工程并导入struts1jar包

      2. 写出登录的login.jsp

        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <html>
        <head>
            <title>登录</title>
        </head>
        <body>
        
        <form action="/login.do" method="post">
            U:<input type="text" name="username"/><br/>
            P:<input type="password" name="password"/><br/>
            <input type="submit" name="login">
        </form>
        </body>
        </html>
        
      3. 编写ActionFrom(表单)和Action(分控)

        • ActionForm

          package com.struts.beanForm;
          
          import org.apache.struts.action.ActionForm;
          
          /*
          * 这是一个用户表单继承ActionForm,用于填充数据
          * */
          public class UserForm extends ActionForm {
          
              //定义属性【规范:定义属性名称的时候应该和jsp页面的空间名称一致,更加细化的讲因该是和get和set方法一致】
          
              private String username;
          
              private String password;
          
              public String getPassword() {
                  return password;
              }
          
              public void setPassword(String password) {
                  this.password = password;
              }
          
              public String getUsername() {
                  return username;
              }
          
              public void setUsername(String username) {
                  this.username = username;
              }
          }
          
          
        • Action

          package com.struts.action;
          
          import com.struts.beanForm.UserForm;
          import org.apache.struts.action.Action;
          import org.apache.struts.action.ActionForm;
          import org.apache.struts.action.ActionForward;
          import org.apache.struts.action.ActionMapping;
          
          public class LoginAction extends Action {
          
              /*
              *
              * 我们需要重新编写一个方法,execute执行器,会在类初始化的时候自动执行
              * */
              @Override
              public ActionForward execute(ActionMapping mapping, ActionForm form, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws Exception {
                  UserForm userForm = (UserForm) form;
                  if (userForm!=null){
                      if ("123".equals(userForm.getPassword())){
                             request.setAttribute("name",userForm.getUsername());
                          return mapping.findForward("ok");
                      }
                  }
                  return mapping.findForward("error");
              }
          }
          
          
      4. 配置struts.xml文件

        <?xml version="1.0" encoding="UTF-8"?>
        <!--引入dtd文件,dtd文件规定了html标签的顺序,一般在jar中会有-->
        <!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>
            <!--配置表单位置-->
            <!--name是表单名称可以随便写,建议按照规范表单类名首字母小写-->
            <!--type是表单的映射位置-->
            <form-beans>
                <form-bean name="userForm" type="com.struts.beanForm.UserForm"/>
            </form-beans>
            <!--配置action-->
            <action-mappings>
                <!--配置一个具体的action-->
                <!--path表示将来访问该action的资源名称 http//localhost:8080/web/path?-->
                <!--关联表单,在action中获取表单信息-->
                <!--type是action的全路径-->
                <action path="/login" name="userForm" type="com.struts.action.LoginAction">
                    <!--这里配置跳转关系-->
                    <!--name表示名称,path表示转发的页面的路径-->
                    <forward name="ok" path="/WEB-INF/ok.jsp"/>
                    <forward name="error" path="/WEB-INF/error.jsp"/>
        
                </action>
            </action-mappings>
        </struts-config>
        
      5. 写出ok.jsp和error.jsp

        • 跳转ok.jsp

          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
          <head>
              <title>Title</title>
          </head>
          <body>
          <h1>欢迎登录</h1><h3><%request.getAttribute("name"); %></h3>
          <a href="login.jsp"></a>
          </body>
          </html>
          
          
        • 跳转error.jsp

          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
          <head>
              <title>Title</title>
          </head>
          <body>
          <h1>用户信息或密码错误</h1>
          <a href="login.jsp"></a>
          </body>
          </html>
          
      6. 在web.xml配置struts

        <?xml version="1.0" encoding="UTF-8"?>
        <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
                 version="4.0">
            <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>2</load-on-startup>
            </servlet>
            <servlet-mapping>
                <servlet-name>action</servlet-name>
                <url-pattern>*.do</url-pattern>
            </servlet-mapping>
        </web-app>
        



版权声明:本文为qq_41701107原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。