Struts 1.x项目——简单的登录界面

前言:这是一个最简单的Struts 1.x的项目。设计思路是在表单中输入用户名和密码,验证用户名和密码是否有内容(服务器端验证),如果输入正确显示欢迎信息,否则显示错误信息。

使用软件:MyEclipse2017, Tomcat 8.5
MyEclipse默认支持Struts 1.x和Struts 2.x的开发。

一、建立一个新的项目

1.选择新建Web Project,输入项目名称Struts_Login

在这里插入图片描述

2.在Struts 1.x还没有Annotation配置支持,所以此处使用Struts 1.x建议生成web.xml

在这里插入图片描述

3.所谓的开发框架实际上是一组开发程序jar包,在MyEclipse里面可以直接为项目配置这些jar包

(1)选择项目——右键——选择MyEclipse的项目支持(选择Struts 1.x)

在这里插入图片描述

(2)进入Struts 1.x的配置页面,本次选择1.3版本

在这里插入图片描述

(3)定义配置信息
  • Servlet的处理路径:Struts 1.x中的Servlet路径是一个经典的“*.do”
  • 要求输入项目的程序包,本次设置为lh_login(这个时候会发现自动创建一个文件“application resource”,是保存文本资源的文件)
  • 询问用户要使用的开发包
    在这里插入图片描述
    在这里插入图片描述
(4)点击finish,此时产生了一系列jar包

在这里插入图片描述

4.项目完成后为自动在项目中出现以下内容

  • 会自动将Struts 1.x的开发包配置到CLASSPATH中
  • 在WEB-INF目录下会自动创建有一个struts-config.xml文件,这个是Struts的核心配置文件
  • 在src目录下(最终会输出到WEB-INF/classes下)存在一个ApplicationResources.properties

二、开发项目

1.建立一个名为login.jsp的页面

(1)创建界面

在这里插入图片描述

(2)在建立这个页面的时候,将使用Struts 1.x提供的标签完成(为了方便回填)

在这里插入图片描述
(程序代码见文章最后)

2.配置错误信息,修改ApplicationResoureces.properties文件

在这里插入图片描述


```html
# 这些验证的错误信息是给ActionForm准备的
username.input.null=<li>登录用户名不允许为空!</li>
password.input.null=<li>登录密码不允许为空!</li>
# 这些登录的结果信息是给Action准备的
login.success=用户登录成功,欢迎!
login.failure=用户登录失败,请重新登录!

3.创建处理程序

Struts 1.x的处理程序分为两种类型:Action(负责跳转功能,与Servlet相似)、ActionForm(进行数据验证使用的)

(1)创建文件

在这里插入图片描述
在这里插入图片描述

(2)首先会进入到创建ActionForm的操作对话框
  • Use case:表示本次操作的模块名称,输入“mylogin”
  • 随后自动出现一个name的数据“myloginForm”,它是在struts-config.xml文件里面出现的
  • 在这里插入图片描述
  • 让这个ActionForm继承“org.apache.struts.action.ActionForm”类
  • 在这里插入图片描述
  • 设置属性:在JSP中写了两个属性,分别为“username”和“password”
  • 在这里插入图片描述
(3)下一步进入到Action的配置
  • 这里面最需要配置的是一个访问路径,也就是表单提交路径“/mylogin”
  • 此Action继承“org.apache.struts.action.ActionForm”父类
  • 设置Input Source为login.jsp
  • 在这里插入图片描述

4.在MyloginActionForm中编写如下代码

  • 发现建立的属性(此处为username和password)都会自动生成setter、getter对应的方法
  • 数据验证的代码操作要求写在validate操作里面

5.开发Action程序,一旦代码执行到Action之后,那么就表示数据验证已经通过了,一定是符合要求的数据。

  • 在struts-config.xml文件里面配置跳转的路径,现在假设成功或者失败都跳转到login.jsp
  • 编写MyLoginAction程序类(程序见文章最后)

三、遇到的问题:

1.项目汉字乱码

(1)在login.jsp文件最上方加上
<%@page contentType=“text/html; charset=UTF-8”%>
<%@ page language=“java” pageEncoding=“UTF-8”%>
(2)web.xml和struts-config.xml文件第一行都有

<?xml version="1.0" encoding="UTF-8"?>

四、输出结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、程序代码

1.login.jsp文件

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

<%@ page language="java" pageEncoding="UTF-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html lang="true">
<head>
<html:base />
<title>请登录</title>
</head>
 <body>
<html:errors/>
${msg}
<html:form action="mylogin.do" method="post">  

用户名:<input type="text" name="username"> <br/>
密码:<input type="password" name="password"> <br/>
<input type="submit" name="submit1" value="登录">

</html:form>

  </body>
</html:html>

2.web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Struts_Login</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <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>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</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>

3.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="myloginForm" type="lh_login.struts.form.MyloginForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="myloginForm"
      input="/login.jsp"
      name="myloginForm"
      path="/mylogin"
      scope="request"
      type="lh_login.struts.action.MyloginAction"
      cancellable="true" >
      <forward name="success" path="/login.jsp"/>
      <forward name="failure" path="/login.jsp"/>
      </action>

  </action-mappings>

  <message-resources parameter="lh_login.struts.ApplicationResources" />
</struts-config>


4.MyloginForm.java文件

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package lh_login.struts.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/** 
 * MyEclipse Struts
 * Creation date: 10-27-2020
 * 
 * XDoclet definition:
 * @struts.form name="myloginForm"
 */
public class MyloginForm extends ActionForm {


	/** password property */
	private String password;

	/** username property */
	private String username;

	/** 
	 * Method validate
	 * 此方法主要进行输入数据的验证,如果现在输入的数据有错误,则将错误信息保存在ActionMessage类对象里面
	 * 并且所有的ActionMessage类对象可以统一保存在ActionErrors,如果在返回的时候返回的是null或者ActionEroors返回的内容没有包含任何错误信息
	 * 那么会将请求继续交给Action进行处理,否则会返回到一个错误路径
	 * @param mapping 表示所有的映射信息,此类一般不使用
	 * @param request 可以接收用户的请求参数
	 * @return ActionErrors 如果返回为null或者里面保存的错误信息为0,那么表示正确,
	 */
	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		
		ActionErrors errors =new ActionErrors();//保存错误信息
		//当用户发送请求后,所有的输入的参数都会自动调用setter赋值,当执行到此方法时,一定是处理完参数了
		if (this.username==null||"".equals(this.username)){//输入的username参数内容为空
			//Add()方法有两个参数,第一个参数表示的是提交参数的名字
			//第二个参数表示读取的错误的key,错误的信息利用ActionMessage读取
			errors.add("username",new ActionMessage("username.input.null"));
		}
		if (this.password==null||"".equals(this.password)){
			//Add()方法有两个参数,第一个参数表示的是提交参数的名字
			//第二个参数表示读取的错误的key,错误的信息利用ActionMessage读取
			errors.add("password",new ActionMessage("password.input.null"));
		}
		return errors;
	}

	public void reset(ActionMapping mapping, HttpServletRequest request) {
		
	}

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

5.MyloginAction.java文件

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package lh_login.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lh_login.struts.form.MyloginForm;
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 MyloginAction extends Action {

	/** 此操作主要是进行用户的请求处理,类似于doGet()或者是doPost()方法功能
	 * @param mapping 此类主要负责读取struts-config.xml文件配置
	 * @param form 表示要操作的ActionForm,使用它的目的是为了能够接收参数
	 * @param request  用户的请求
	 * @param response  用户回应
	 * @return ActionForward  表示返回的路径信息,通过配置文件取出映射的key
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) {
		MyloginForm myloginForm = (MyloginForm) form;
		if("java".equals(myloginForm.getUsername())&& "java".equals(myloginForm.getPassword())){
			request.setAttribute("msg", "用户登录成功,欢迎!");
			return mapping.findForward("success");
		}else{
			request.setAttribute("msg", "用户登录失败,请重新登录!");
			return mapping.findForward("failure");
		}
	}
}

6.ApplicationResources.properties文件

Resources for parameter 'lh_login.struts.ApplicationResources'
# Project Struts_Login

# \u8FD9\u4E9B\u9A8C\u8BC1\u7684\u9519\u8BEF\u4FE1\u606F\u662F\u7ED9ActionForm\u51C6\u5907\u7684
username.input.null=<li>\u767B\u5F55\u7528\u6237\u540D\u4E0D\u5141\u8BB8\u4E3A\u7A7A\uFF01</li>
password.input.null=<li>\u767B\u5F55\u5BC6\u7801\u4E0D\u5141\u8BB8\u4E3A\u7A7A\uFF01</li>
# \u8FD9\u4E9B\u767B\u5F55\u7684\u7ED3\u679C\u4FE1\u606F\u662F\u7ED9Action\u51C6\u5907\u7684
login.success=\u7528\u6237\u767B\u5F55\u6210\u529F\uFF0C\u6B22\u8FCE\uFF01
login.failure=\u7528\u6237\u767B\u5F55\u5931\u8D25\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55\uFF01
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值