做一个简单的Struts2框架的用户登陆网页(一起学习)

做一个简单的Struts2框架的用户登陆网页(一起学习)

写这篇文章时,我和你们一样也是初学者,接下来我分享一下我的学习成果给大家!
首先我是在 Java IDE 下开发的,直接去官网下载即可。相信大家已经把tomcat,jdk,环境变量等弄好了,接下来开始我的学习过程。

1. 熟悉下载安装Struts2开发包
直接在官网下载相应的压缩包即可,我用的是同学给我的解压包
直接复制粘贴在lib目录下即可
做一个简单的Struts2框架的用户登陆网页(一起学习)
2. 配置相应的dtd文件
解压上图的struts2-core-2.3.24.jar包,复制struts-2.3.dtd在方便找到的位置(我放在的是桌面,并且我是直接在IDE里查看的)
做一个简单的Struts2框架的用户登陆网页(一起学习)
做一个简单的Struts2框架的用户登陆网页(一起学习)
在上图箭头的指示找到该操作框,Location中的是2.3.dtd的位置,key的在该文件中可以找到,完成后基本就配置成功了。

3.配置struts.xml
我在开始创建项目时src包下并没有这个文件,需要自己手动添加,鼠标点击src包再ctrl+N,搜索xml file,在相应位置添加配置文件,一路next即可(因为我已经创建过了,无法创建一个同名的文件,所以显示报错)
做一个简单的Struts2框架的用户登陆网页(一起学习)
struts.xml的代码

<?xml version="1.0" encoding="UTF-8"?>
<!--头文件中的dtd文件在添加struts-xxx.dtd后自动生成,可在dtd中查找到-->
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="flase"></constant><!-- 动态管理 -->
<!--首先写package标签,在package里面才能配置action,继承了struts-default这个属性值后,在package里面配置的类具有action功能 -->
<package name="text" namespace="/" extends="struts-default">
<!--定义了action请求跳转,login是jsp中定义的提交表单名称,class对应的是action的路径,使用method进行配置execute方法  -->
<action name="login" class="com.LoginAction" method="execute">
<!--使用<result>标签做一个动作接口,SUCCESS表示Action正确的执行完成,ERROR表示Action执行失败  -->
<result name="success">/welcome.jsp</result>
<result name="error">/error.jsp</result>
</action>
</package> 
</struts>

里面的一些注释是我写实验报告时附上的,也不确定完全正确,希望能帮到你。

4.配置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">

<filter>
  <!-- Filter的名字 -->
  	<filter-name>struts</filter-name>
  	<!-- Filter的实现类 -->
  	<filter-class>org.apache.struts2.dispatcher.ng.filter.
StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <!-- 定义Filter拦截的URL地址 -->
  <filter-mapping>
  <!-- Filter的名字 -->
  	<filter-name>struts</filter-name>
  	<!-- Filter负责拦截的URL 全部以/的请求,如果<url-pattern>/*.action </>,
  	将会以拦截*.action的请求-->
  	<url-pattern>/*</url-pattern>
 </filter-mapping>

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

</web-app>

其中Filter的实现类可从core.jar包中的filter文件的StrutsPrepareAndExecuteFilter.class中查找到
做一个简单的Struts2框架的用户登陆网页(一起学习)
5.LoginAction类

package com;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;
import com.valueBean.User;

public class LoginAction extends ActionSupport {

	private User u;
 public String execute(){
     if(("076".equals(u.getUsername())) && ("076".equals(u.getUserpass()))||
    	("103".equals(u.getUsername())) && ("103".equals(u.getUserpass()))||
        ("104".equals(u.getUsername())) && ("104".equals(u.getUserpass()))||
        ("130".equals(u.getUsername())) && ("130".equals(u.getUserpass()))||
        ("115".equals(u.getUsername())) && ("115".equals(u.getUserpass())))
     {
    	 return SUCCESS;
     }else {
		 return ERROR;
     }
 }
public User getU() {
	return u;
}
public void setU(User u) {
	this.u = u;
}
 
}

.equals() 判断值是否相等,使用函数GetUserName获取当前用户名称。
我定义了一个javabean来封装用户信息(u)

6.我的javabean

package com.valueBean;

public class User {
	public User() {}
	public User(String username,String userpass) {
		this.username = username;
		this.userpass = userpass;
	}
	private String username;
	private String userpass;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getUserpass() {
		return userpass;
	}
	public void setUserpass(String userpass) {
		this.userpass = userpass;
	}
}

7.开始界面和成功或失败的界面
顺便写点就可以了,只要定义的用户名和密码和我的一样就行了(username,userpass),我的初始界面是login.jsp,成功的界面是welcome.jsp,失败的是error.jsp,下面的是我项目的全部东西
做一个简单的Struts2框架的用户登陆网页(一起学习)
login.jsp

<%@page language="java" contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>登录页面</title>
		<style>
			table{
				background-size:100% 100%;
				border:2px solid gray;
				margin:10% auto;
			}
			td{
				border:1px solid gray;
				text-align:center;
			}
			img{
				width: 15px;
				height: 10px;
				opacity:0.5;
				left: 180px; 
				position:relative;
				top:0px;
			}
			img:hover{
				border-color:blue;
				opacity:1;
			}
		</style>
		<script>
			function hideShowPsw(){
				var demoImg = document.getElementById("demo_img");
				var demoInput = document.getElementById("demo_input");
				if (demoInput.type == "password") {
					demoInput.type = "text";
					demo_img.src = "image/visible.png";
				}else {
					demoInput.type = "password";
					demo_img.src = "image/invisible.png";
				}
			}
			function checkpost(){
				if((document.forms[0].username.value=="")){
					alert("用户名不能为空!");
					document.forms[0].username.focus();
					return false;
				}
				else if((document.forms[0].demo_input.value=="")){
					alert("密码不能为空!");
					document.forms[0].demo_input.focus();
					return false;
				}
				else{
					return true;
				}
			}
		</script>
	</head>
	<body>
		<form action="login" onsubmit="return checkpost()" method="post">
			<table>
				<tr>
					<td colspan="2"><font size="6" color="gray">用户登录界面</font></td>
				</tr>
				<tr>
					<td>用 户 名:</td>
					<td>
						<input type="text" id="username" name="u.username" list="text_list" />
						<datalist id="text_list">
							<option label="a" value="076" />
							<option label="b" value="103" />
							<option label="c" value="104" />
							<option label="d" value="115" />
							<option label="e" value="130" />
						</datalist>
					</td>
				</tr>
				<tr>
					<td>密 <img id="demo_img" onclick="hideShowPsw()" src="image/invisible.png"/> 码:</td>
					<td>
						<input type="password" id="demo_input" name="u.userpass" />
					</td>
				</tr>
				<tr><td colspan="2">
				<input type="reset" value="重置"/> ||
				<input type="submit" name="submit" value="登录"/>
				</td></tr>
			</table>
    	</form>
	</body>
</html>

welcome.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
  </head>
  <body>
    <font>登录成功</font>
  </body>
</html>

error.jsp

<%@ page language="java"  pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
  </head>
  <body>
    <font>登录失败</font>
  </body>
</html>

其实初始界面不用那么复杂,这是同学写的,因为我们要代码演示,初始界面当然要弄得高级一点了(吓到他们)

这就是我项目的全部7个文件,希望能帮到你们,我们一起进步!