使用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内容自定。

运行结果如图:

会根据输入进行跳转。

使用struts2进行登录功能的开发的更多相关文章

  1. struts2,登录功能模块实现

    功能: ·UserLogin作为控制登录的Action,校验密码成功后记录session,可以选择记住登陆状态,登陆成功后自动跳转到登陆前的URL: ·UserLogout作为控制登录推出的Actio ...

  2. 2、使用Struts2实现登录功能(没有连接数据)

    1.创建如下的目录结构 2.在com.entity包下创建 package com.entity; /** * 用户类 * @author Holly老师 * */ public class User ...

  3. Struts2整合Hibernate3实现用户登录功能

    所用技术:struts2 ,hibernate,jsp,mysql 本DEMO仅仅实现用户登录功能,采用MVC思想,自己也觉得相对是比较简单,比较容易理解数据流向的一个例子,通过整合这个过程,能够清晰 ...

  4. 一步步开发自己的博客 .NET版(3、注册登录功能)

    前言 这次开发的博客主要功能或特点:    第一:可以兼容各终端,特别是手机端.    第二:到时会用到大量html5,炫啊.    第三:导入博客园的精华文章,并做分类.(不要封我)    第四:做 ...

  5. 项目开发-->一键登录功能汇总

    开发网站经常会提供一些一键登录功能,如:QQ.新浪微博.淘宝账号.开心网账号.人人网账号等进行快捷登录,下面记录几个常用的开放平台地址,方便以后开发需要. 1.QQ互联 2.新浪微博 网站接入QQ互联 ...

  6. 菜鸟级springmvc+spring+mybatis整合开发用户登录功能(上)

    由于本人愚钝,整合ssm框架真是费劲了全身的力气,所以打算写下这篇文章,一来是对整个过程进行一个回顾,二来是方便有像我一样的笨鸟看过这篇文章后对其有所帮助,如果本文中有不对的地方,也请大神们指教. 一 ...

  7. node+vue进阶【课程学习系统项目实战详细讲解】打通前后端全栈开发(1):创建项目,完成登录功能

    第一章 建议学习时间8小时·分两次学习      总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章]) 视频教程地 ...

  8. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之登录功能

    昨天的博客中我分享了个人关于ssh实现员工管理的框架整合,今天我在分享管理员登录功能的实现.  转载请注明出处"http://www.cnblogs.com/smfx1314/p/78013 ...

  9. 基于IntelliJ IDEA开发工具搭建SSM框架并实现页面登录功能详细讲解二

    接: 接下来配置类 UserController package com.chatRotbot.controller; import com.chatRotbot.model.User; import ...

随机推荐

  1. ios开发――解决UICollectionView的cell间距与设置不符问题

    在用UICollectionView展示数据时,有时我们希望将cell的间距调成一个我们想要的值,然后查API可以看到有这么一个属性: - (CGFloat)minimumInteritemSpaci ...

  2. Java练习 SDUT-3268_飞花的糖果

    飞花的糖果 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 一日,飞花壕大手一挥,买了N个的两两不相同糖果,他想要拿出M ...

  3. 【C++】STL,vector容器操作

    C++内置的数组支持容器的机制,但是它不支持容器抽象的语义.要解决此问题我们自己实现这样的类.在标准C++中,用容器向量(vector)实现.容器向量也是一个类模板.标准库vector类型使用需要的头 ...

  4. 【Leetcode链表】环形链表(141)

    题目 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. 示例 1: ...

  5. sql —— having

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用.HAVING 子句可以让我们筛选分组后的各组数据. 原表: 我们可以对上面数据根据性别这个字段进行分组查询,分别 ...

  6. hdu 1950 最长上升子序列(lis) nlogn算法【dp】

    这个博客说的已经很好了.http://blog.csdn.net/shuangde800/article/details/7474903 简单记录一下自己学的: 问题就是求一个数列最长上升子序列的长度 ...

  7. jquery的操作

    jQuery jQuery介绍 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行 ...

  8. 洛谷P1060 开心的金明

    //01背包 价值等于重要度乘体积 #include<bits/stdc++.h> using namespace std; ; ; int n,m,v[maxn],w[maxn],f[m ...

  9. Knative Tracing 介绍

    摘要: 一个完整的业务实现想要基于 Serverless 模型来开发的话可能会分解成多个 Serverless 模块,每一个模块单独通过 Knative 的 Serving 部署,那么这些不同的 Se ...

  10. OpenStack☞HTTP协议

    前言 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准 HTTP是一个基于TCP/IP通信协议 ...