持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情
前言
Struts2 是一个基于MVC设计模式的[Web应用框架,它本质上相当于一个 servlet,在MVC设计模式中,Struts2 作为控制器来建立模型与视图的数据交互。
Struts 2是 Struts 的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的 Struts 2框架。其全新的 Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2 以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与 ServletAPI 完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
本文是适合小白学习 Struts2 框架的教程,基与 Struts2 实现登录功能。
1、实现思路
- 1.首先创建一个项目,名为 StrutsTest
- 2.创建一个包存放 Struts,创建类,命名为 LoginAction.java
- 3.在该包下,创建一个 xml 文件,名为 struts.xml
- 4.把 jar 包导入 lib 目录下
- 5.在 web.xml 中配置过滤器
- 6.创建一个实体类 User,其中的属性值与 form 表单提交的数据保持一致
- 7.关键代码如下:
2、实现过程
目录结构如下:
1、LoginAction.java action 类
这里主要是对登录逻辑的判断,重写 execute() 方法。
package sqgxy.xmp.action;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import sqgxy.xmp.entity.User;
import java.util.Map;
public class LoginAction implements Action { //ActionSupport类
private User user; //entity实体层的User
public String execute() throws Exception { //每次访问Action,默认执行execute()方法。
System.out.println("用户名:" + user.getUserName());
System.out.println("密码:" + user.getPassword());
/**
* 简单的登录判断
*/
if ("熊民普".equals(user.getUserName()) && "xmp".equals(user.getPassword())) {
// 将user对象保存在session中
Map<String, Object> session = null;
session = ActionContext.getContext().getSession();
session.put("CURRENT_USER", user);
return Action.SUCCESS; //返回字符串SUCCESS,为struts.xml跳转做准备。
} else {
return Action.ERROR;
}
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
2、User.java 实体类
封装User对象,Get、Set 方法的编写。
package sqgxy.xmp.entity;
public class User {
private String userName;
private String password;
public User() {
}
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;
}
}
3、struts.xml 配置文件
这里主要是Struts2的配置,命名只能为struts.xml,且只能放在 src 根目录下,当 action 返回 success 时跳转至登录成功页面,否则跳转至登录失败页面。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/default" extends="struts-default">
<action name="login" class="sqgxy.xmp.action.LoginAction" method="execute">
<!--结果为字符串"success"时,跳转至登录成功页面-->
<result name="success">/success.jsp</result>
<!--结果为字符串"error"时,跳转至登录失败页面-->
<result name="error">/error.jsp</result>
</action>
</package>
</struts>
页面代码如下:
4、登录页面
<%--Created by IntelliJ IDEA.
User: xmpDate: 2022/9/13
Time: 9:04
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="default/login" method="post">
用户名:<input type="text" name="user.userName" /><br />
密 码: <input type="password" name="user.password"/><br />
<input type="submit" />
</form>
</body>
</html>
5、Error 页面
<%--
Created by IntelliJ IDEA.
User: xmp
Date: 2022/9/13
Time: 9:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录失败</title>
</head>
<body>
<h2 style="color: red">用户名或密码不匹配。</h2>
</body>
</html>
6、Success 页面
<%--
Created by IntelliJ IDEA.
User: xmp
Date: 2022/9/13
Time: 9:04
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<html>
<head>
<title>登录成功</title>
</head>
<body>
欢迎您,${sessionScope.get("CURRENT_USER").userName}
</body>
</html>
3、实验结果
1.登录界面:
2.登录失败界面:
3.登录成功界面:
总结
以上就是 Stuts2 实现登录的全部内容,仅供大家参考学习,通过该 demo 可以学习到 Struts2 框架的核心思想, 希望可以帮到小白学习进阶 Struts2 框架,后续我还会继续持续输出。