使用struts2进行登录功能的开发

使用struts2进行登录功能的开发

一、 设计需求

使用idea和maven开发具有登录功能的web应用,java语言,使用struts2框架。

二、 设计步骤

1.使用idea创建maven应用,利用maven的webapp模板

填入groupId和ArtifactId后进行下一步,选择maven位置和属性,一般idea会自动读取,之后设置项目位置。

 

创建成功后,在pom.xml中加入struts2

<dependencies>
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
  </dependency>
  <dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.3.14</version>
  </dependency>
</dependencies>

2.目录结构如图

3.创建控制层login.java

         不需要继承自任何的类,需要定义函数,struts2的入口函数,类似与main函数

public String execute()

login.java源代码为:

package com.hyp.controller;

import com.hyp.model.UserinfoService;

/**
 * @author hyp
 * Project name is LearnStruts
 * Include in com.hyp.controller
 * hyp create at 2018/7/14
 **/
public class login {
    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()
    {
        UserinfoService userinfoService=new UserinfoService();

        if (userinfoService.login(username,password))
        {
            return "toOKJSP";
        }else
        {
            return "toNOJSP";
        }
    }
}

4.业务层UserinfoService.java

登录的核心功能,这里进行简化

package com.hyp.model;

/**
 * @author hyp
 * Project name is LearnStruts
 * Include in com.hyp.model
 * hyp create at 2018/7/14
 **/
public class UserinfoService {
    public boolean login(String username, String password) {
        if ("hyp".equals(username)&&"123".equals(password))
        {
            return true;
        }
        return false;
    }
}

5.创建视图文件login.jsp

<%--
  Created by IntelliJ IDEA.
  User: hyp
  Date: 2018/7/14
  Time: 17:15
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login</title>
</head>
<body>
<form action="login.action" method="post">
    username:<input type="text" name="username"><br>
    password:<input type="password" name="password"><br>
    <input type="submit" value="登录">
</form>
</body>
</html>

6.在WEB-INF/classes下创建struts.xml文件

设置登录后的页面跳转,struts.devMode是指开发模式,报错信息输出较完整,<package name="struts2login" extends="struts-default">定义一个包,及继承默认的配置。<action name="login" class="com.hyp.controller.login">定义action名, 以及实现的类。Result是对返回结果的一个处理。

<?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>
<constant name="struts.devMode" value="true"/>
    <package name="struts2login" extends="struts-default">
        <action name="login" class="com.hyp.controller.login">
            <result name="toOKJSP">/ok.jsp</result>
            <result name="toNOJSP">/no.jsp</result>
        </action>
    </package>

</struts>

Web.xml中是


<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <filter>
      <filter-name>struts2</filter-name>
      <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.jsp</url-pattern>
    </filter-mapping>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.js</url-pattern>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
    </welcome-file-list>
</web-app>

no.jsp和ok.jsp内容自定。

运行结果如图:

会根据输入进行跳转。

原文地址:https://www.cnblogs.com/pingxin/p/p00004.html