本节将演示一个基本的登录流程,在登录界面中若输入正确的用户名和密码,跳转到登录成功界面;否则路转到登录失败界面。

1 建立一个名为LoginDemo的动态Web项目

2 添加struts2相关的jar包,

3 配置web.xml文件,其内容为

  1. <?xml version="1.0" encoding="GBK"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  5. id="WebApp_ID" version="3.0">
  6. <filter>
  7. <filter-name>struts2</filter-name>
  8. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  9. </filter>
  10. <filter-mapping>
  11. <filter-name>struts2</filter-name>
  12. <url-pattern>/*</url-pattern>
  13. </filter-mapping>
  14. </web-app>

4 创建三个jsp文件,login.jsp展示登录界面,welcome.jsp展示登录成功界面,error.jsp展示登录失败界面。

login.jsp中的内容为:

  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="GBK"%>
  3. <%@taglib prefix="s" uri="/struts-tags"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  8. <title><s:text name="登录页面" /></title>
  9. </head>
  10. <body>
  11. <s:form action="login">
  12. <s:textfield name="username" key="用户名" />
  13. <s:textfield name="password" key="密码" />
  14. <s:submit key="login" />
  15. </s:form>
  16. </body>
  17. </html>

welcome.jsp中的内容为:

  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="GBK"%>
  3. <%@taglib prefix="s" uri="/struts-tags"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <title><s:text name="成功页面"/></title>
  8. <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  9. </head>
  10. <body>
  11. <s:text name="登录成功!">
  12. </s:text><br/>
  13. </body>
  14. </html>

error.jsp中的内容为:

  1. <%@ page language="java" contentType="text/html; charset=GBK"
  2. pageEncoding="GBK"%>
  3. <%@taglib prefix="s" uri="/struts-tags"%>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <title><s:text name="失败页面"/></title>
  8. <meta http-equiv="Content-Type" content="text/html; charset=GBK">
  9. </head>
  10. <body>
  11. <s:text name="登录失败"/>
  12. </body>
  13. </html>

5 在src目录下建立struts.xml文件,其内容为:

  1. <?xml version="1.0" encoding="GBK"?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
  4. "http://struts.apache.org/dtds/struts-2.1.7.dtd">
  5. <!-- 指定Struts 2配置文件的根元素 -->
  6. <struts>
  7. <!-- 指定国际化编码所使用的字符集 -->
  8. <constant name="struts.i18n.encoding" value="GBK" />
  9. <!-- 所有的Action定义都应该放在package下 -->
  10. <package name="action" extends="struts-default">
  11. <action name="login" class="com.example.action.LoginAction">
  12. <!-- 定义三个逻辑视图和物理资源之间的映射 -->
  13. <result name="error">/error.jsp</result>
  14. <result name="success">/welcome.jsp</result>
  15. </action>
  16. </package>
  17. </struts>

这里package name=”action”这个名字可以随便起,比如改为package name=”abc”也是可以的。

<action name="login" class="com.example.action.LoginAction">

这一行表示login.jsp对应的action类为包com.example.action下的LoginAction.Java

<result name="error">/error.jsp</result>

<result name="success">/welcome.jsp</result>

这两个result表示LoginAction.java中的excute()返回值必须为”success”或”error”。

若excute()返回的是”abc”,则struts.xml中的result要相应改为

<result name=”abc”>/XXX.jsp</result>

6 根据struts.xml中的配置,在src下建立包com.example.action,在该包下建立LoginAction.java,其内容为:

  1. package com.example.action;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. public class LoginAction extends ActionSupport
  4. {
  5. private static final long serialVersionUID = 1L;
  6. private String username;
  7. private String password;
  8. public String getUsername()
  9. {
  10. return username;
  11. }
  12. public void setUsername(String username)
  13. {
  14. this.username = username;
  15. }
  16. public String getPassword()
  17. {
  18. return password;
  19. }
  20. public void setPassword(String password)
  21. {
  22. this.password = password;
  23. }
  24. //定义处理用户请求的execute方法
  25. public String execute() throws Exception
  26. {
  27. if (getUsername().equals("zheng") && getPassword().equals("123456") )
  28. {
  29. return "success";
  30. }
  31. else
  32. {
  33. return "error";
  34. }
  35. }
  36. }

注意:这个类中的getUsername()与getPassword()这两个方法名不能随便乱起,而是与login.jsp中的textfield的name对应:

<s:textfield name="username" key="用户名" />

<s:textfield name="password" key="密码" />

7 上面步骤都完成后,整个项目的目录为

8 运行程序

右击login.jsp-->Run As-->Run on Server,显示页面

输入正确的用户名“zheng”和密码“123456”,点击“提交查询内容”,显示页面

退回登录页面,输入错误的用户名和密码,或什么都不输,点击“提交查询内容”,显示页面

 
 

Struts2实现登录流程的更多相关文章

  1. struts2 框架处理流程

    struts2 框架处理流程 流程图如下: 注意:StrutsPrepareAndExecuteFilter替代了2.1.3以前的FilterDispatcher过滤器,使得在执行Action之前可以 ...

  2. 如何设计一个 App 的注册登录流程?

    移 动设备发力之前的登录方式很简单:用户名/邮箱+密码+确认密码,所有的用户登录注册都是围绕着邮箱来做.随着移动设备和社交网络的普及,邮箱不再是唯 一,渐渐的出现了微博,QQ,微信等第三方登录方式,手 ...

  3. 用户登录流程详解 +volley(StringRequest)

    在实习期间由于要求使用volley,所以第一次开始接触volley,从一开始的迷茫陌生,到疯狂的查找各种资料,通过在项目中用到的实际问题,我想做一些总结,所以写了这篇文章.下面我将介绍我理解的用户登录 ...

  4. Struts2的基本流程的详细介绍

    Struts2基本流程 概述: Struts2框架由三部分构成:核心控制器.业务控制器和用户实现的业务逻辑组件.在这三部分中,struts2框架提供了核心控制器StrutsPrepareAndExec ...

  5. Struts2的运行流程以及关键拦截器介绍

    Struts2的运行流程 1.ActionProxy是Action的一个代理类,也就是说Action的调用是通过ActionProxy实现的,其实就是调用了ActionProxy.execute()方 ...

  6. Java Struts2 的请求处理流程详解

    一.Struts2的处理流程: 客户端产生一个HttpServletRequest的请求,该请求被提交到一系列的标准过滤器(Filter)组建链中(如ActionContextCleanUp:它主要是 ...

  7. struts2处理请求流程详解

    struts2大概分为两块:一是struts2系统初始化,二是struts2处理请求,对请求作出响应. 下面就说说个人对struts2对请求处理流程的理解: 下面是StrutsPrepareAndEx ...

  8. 二维码闪电登录流程详解,附demo(1/2)

    二维码,最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设 ...

  9. 微信小程序登录流程

    小程序登录流程 参考 app.js需要做的 1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把 ...

随机推荐

  1. BestCoder Round #86 二,三题题解(尺取法)

    第一题太水,跳过了. NanoApe Loves Sequence题目描述:退役狗 NanoApe 滚回去学文化课啦! 在数学课上,NanoApe 心痒痒又玩起了数列.他在纸上随便写了一个长度为 nn ...

  2. 赤峰项目目前的mysql配置项目

    #BEGIN CONFIG INFO #DESCR: 4GB RAM, InnoDB only, ACID, few connections, heavy queries #TYPE: SYSTEM ...

  3. Go语言标准包之json编码

    标准的就简单通用. package main import ( "encoding/json" "fmt" "log" ) func mai ...

  4. scp命令详解—跨服务器复制文件

    scp在跨机器复制的时候为了提高数据的安全性,使用了ssh连接和加密方式,如果机器之间配置了ssh免密码登录,那在使用scp的时候密码都不用输入. 在服务器104.238.161.75上操作,将服务器 ...

  5. Java学习笔记(九)——javabean

    [前面的话] 实际项目在用spring框架结合dubbo框架做一个系统,虽然也负责了一块内容,但是自己的能力还是不足,所以还需要好好学习一下基础知识,然后做一些笔记.自己的自学能力还是显得不够好,每次 ...

  6. javascript大神修炼记(3)——条件分支

    读者朋友们好,我们今天接着前面的讲,前面已经大概了讲了一下运算符,今天的任务主要就是讲解逻辑条件分支,循环. 我们先就来模拟一个逻辑块,就用我们经常接触到的买车票来说吧,车票的价格对不同的人价格是有差 ...

  7. 六十 数据库访问 使用SQLAlchemy

    数据库表是一个二维表,包含多行多列.把一个表的内容用Python的数据结构表示出来的话,可以用一个list表示多行,list的每一个元素是tuple,表示一行记录,比如,包含id和name的user表 ...

  8. 四十七 常用内建模块 XML

    XML虽然比JSON复杂,在Web中应用也不如以前多了,不过仍有很多地方在用,所以,有必要了解如何操作XML. DOM vs SAX 操作XML有两种方法:DOM和SAX.DOM会把整个XML读入内存 ...

  9. http测试工具ab

    转载:https://www.cnblogs.com/ym123/archive/2015/07/08/4629735.html ab的全称是Apache Bench,是Apache自带的网络压力测试 ...

  10. POJ 1985.Cow Marathon-树的直径-树的直径模板(BFS、DFS(vector存图)、DFS(前向星存图))

    Cow Marathon Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 7536   Accepted: 3559 Case ...