J2EE 实验一

实验一 基于Struts2的登录系统实现

一、目的与任务

目的:熟悉在集成开发平台上配置Struts2框架,学习Struts2编程

任务:在集成开发平台上创建Struts2项目,实现登录系统

二、内容、要求与安排方式

1、实验内容与要求:

  1. 下载Struts2软件包并了解Struts2软件包中主要文件;

  2. 学习在集成开发平台上配置Struts2框架,熟悉Struts2框架编程;

  3. 实现基于Struts2的登录系统,若正确页面跳转到成功页面,不正确页面跳转到登录页面。

可选题:修改登录系统连接数据库,访问数据库判断输入的用户名和密码是否存在。

2、 具体操作步骤:

  1. Intellij IDEA平台上创建Dynamic Web ProjectDynamic Web ProjectEclipse下的表述,在IDEA中应当选择Web Application,然后选择Struct2,如图所示:

  2. 添加Struts2框架常用jar包至项目lib文件夹,Struts2框架常用jar包有:commons-fileupload-1.2.2.jarcommons-io-2.0.1.jarfreemarker-2.3.16.jarjavassist-3.11.0.GA.jarognl-3.0.1.jarstruts2-core-2.2.3.1.jarxwork-core-2.2.3.1.jarcommons-lang3-3.1.jar、commons-logging-1.1.1.jar

    在下放选择Use Library -> create,导入已经下载完成的Struts2框架常用jar包。使用的Struct2版本是 2.5.22 2.5.22 2.5.22


    配置struct2 项目最终的整体结构如下


项目整体结构

  1. web.xml中配置核心控制器FilterDispatcher

    xml 复制代码
    <?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">
        <filter>
            <filter-name>struts2</filter-name>
            <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>struts2</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <welcome-file-list>
            <welcome-file>login.jsp</welcome-file>
        </welcome-file-list>
    </web-app>

    web.xml

  2. 编写视图组件login.jsp, success.jsp,fail.jsp

    html 复制代码
    <%--
      Created by IntelliJ IDEA.
      User: Lunatic
      Date: 2020/5/6
      Time: 9:03
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>基于Struts2的登录系统应用</title>
    </head>
    <body>
    <form method="post" action="login">
        用户名:<input name="userName" type="text" size="26">
        <br>
        密码:<input name="passWord" type="password" size="26">
        <br>
        <input type="submit" value="登录">
    </form>
    <hr>
    </body>
    </html>


    登录界面login.jsp

html 复制代码
<%--
  Created by IntelliJ IDEA.
  User: Lunatic
  Date: 2020/5/6
  Time: 9:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>登录成功页面</title>
</head>
<body>
<h1>你登录成功,欢迎你!!!</h1>
</body>
</html>


登录成功界面success.jsp

html 复制代码
<%--
  Created by IntelliJ IDEA.
  User: Lunatic
  Date: 2020/5/6
  Time: 15:20
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>抱歉,登陆失败</title>
</head>
<body>
<h1>请检查登录名或密码是否正确</h1>
</body>
</html>


登录失败界面fail.jsp

  1. 编写登录页面对应的业务逻辑组件LoginBean
java 复制代码
package LoginBean;

public class LoginBean {
    private String userName;
    private String passWord;

    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;
    }
    public boolean login(String userName, String passWord) {
        boolean b = false;
        if(userName.equals("Lunatic") && passWord.equals("000000")) {
            b = true;
        }
        else {
            b = false;
        }
        return b;
    }
}

LoginBean.java

  1. 编写业务控制器LoginAction.java
java 复制代码
package LoginAction;
import LoginBean.LoginBean;

public class LoginAction {
    private String userName;
    private String passWord;

    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;
    }
    public String execute() throws Exception{
        LoginBean lb = new LoginBean();
        if(lb.login(userName, passWord)) {
            return "success";
        }
        else {
            return "error";
        }
    }
}

LoginAction.java

  1. struts.xml中配置Action

    xml 复制代码
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
            "http://struts.apache.org/dtds/struts-2.5.dtd">
    
    <struts>
        <package name="zzf" extends="struts-default" namespace="/">
            <action name="login" class="LoginAction.LoginAction">
                <result name="error">/fail.jsp</result>
                <result name="success">/login/success.jsp</result>
            </action>
        </package>
    </struts>

    struct.xml

  2. 启动服务器,运行页面即可。本地页面地址http://localhost:8080/First_Web_Project_war_exploded/_


    本地Tomcat服务器启动


    登录界面打开正常


输入正确的用户名和密码,登录成功


输入用户名、密码错误,登陆失败

相关推荐
vx-程序开发4 天前
springboot课程管理系统-计算机毕业设计源码16731
spring boot·后端·课程设计
iCxhust4 天前
从裸机到微内核:8088单板机微型操作系统规划设计
操作系统·课程设计·微机原理·8086最小系统·8088单板机
老花眼猫5 天前
C语言矩形旋转算法介绍
c语言·经验分享·青少年编程·课程设计
largecode6 天前
打电话时,怎么让号码显示自己的品牌名称?办理号码认证服务流程
笔记·百度·微信·课程设计·微信公众平台·facebook·新浪微博
源码之家7 天前
计算机毕业设计:Pyhon健康数据分析系统 Django框架 数据分析 可视化 身体数据分析 大数据(建议收藏)✅
大数据·python·数据挖掘·数据分析·django·lstm·课程设计
vx_biyesheji00047 天前
计算机毕业设计:Python医疗数据分析平台 Flask框架 数据分析 可视化 医疗大数据 用户画像(建议收藏)✅
大数据·python·深度学习·数据分析·django·flask·课程设计
源码之家8 天前
计算机毕业设计:Python医疗数据可视化系统 Flask框架 数据分析 可视化 医疗大数据 用户画像(建议收藏)✅
python·深度学习·信息可视化·数据分析·django·flask·课程设计
largecode8 天前
能不能让座机号码显示“XX公司”那样的认证名称?申请号码认证方法
经验分享·笔记·音视频·课程设计·oneapi·segmentfault·微信开放平台
biyezuopinvip9 天前
基于STC89C51单片机的多波形信号发生器设计与Proteus仿真
单片机·proteus·课程设计·proteus仿真·基于stc89c51单片机的·多波形·信号发生器设计
源码之家9 天前
计算机毕业设计:Python基于知识图谱的医疗问答系统 Neo4j 机器学习 BERT 深度学习 ECharts(建议收藏)✅
python·深度学习·机器学习·信息可视化·数据分析·知识图谱·课程设计