struts 1.3.X
前言:
在目前来看基于struts 的项目基本上,已经被淘汰并消失到了历史的长河中,各种培训也在宣扬spring全家桶。
但是总是有那么一个时候,进入了一个不大不小的公司,给你一个十年前的老项目,这个时候,不要痛苦,学习老技术也是理解开发过程的一种途径。
正巧题主现在就遇上了这种问题,一个金融类的10多年的项目,正好学习了解下古老的Struts1.
struts 1.3.X 下载
注:在下载页面的下方会有struts1.3.X的版本的jar包
基础入门
概念:
-
struts是一个基于mvc的web框架。
- mvc是一种模式也是一种思想,我们会把数据的输入(例:jsp界面)、数据的处理(靠控制端接受数据后,调用model来完成处理)、数据的显示(返回到jsp页面上进行显示)
-
struts是基于mvc的架构为了简化开发而提出的一种规范,
- 好处:提高程序的可读性,和规范。
- 坏处:约束 了程序的自由,也约束了程序员。
原理:
-
以一个用户登录为例子,来进行举例说明。
-
-
以用户登录模块验证来演示
-
我们使用手动配置的方式来实现
-
创建web工程并导入struts1jar包
-
写出登录的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>
-
编写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"); } }
-
-
配置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>
-
写出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>
-
-
在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 版权协议,转载请附上原文出处链接和本声明。