Struts2实现登录流程
本节将演示一个基本的登录流程,在登录界面中若输入正确的用户名和密码,跳转到登录成功界面;否则路转到登录失败界面。
1 建立一个名为LoginDemo的动态Web项目
2 添加struts2相关的jar包,
3 配置web.xml文件,其内容为
- <?xml version="1.0" encoding="GBK"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- id="WebApp_ID" version="3.0">
- <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>/*</url-pattern>
- </filter-mapping>
- </web-app>
4 创建三个jsp文件,login.jsp展示登录界面,welcome.jsp展示登录成功界面,error.jsp展示登录失败界面。
login.jsp中的内容为:
- <%@ page language="java" contentType="text/html; charset=GBK"
- pageEncoding="GBK"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK">
- <title><s:text name="登录页面" /></title>
- </head>
- <body>
- <s:form action="login">
- <s:textfield name="username" key="用户名" />
- <s:textfield name="password" key="密码" />
- <s:submit key="login" />
- </s:form>
- </body>
- </html>
welcome.jsp中的内容为:
- <%@ page language="java" contentType="text/html; charset=GBK"
- pageEncoding="GBK"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title><s:text name="成功页面"/></title>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK">
- </head>
- <body>
- <s:text name="登录成功!">
- </s:text><br/>
- </body>
- </html>
error.jsp中的内容为:
- <%@ page language="java" contentType="text/html; charset=GBK"
- pageEncoding="GBK"%>
- <%@taglib prefix="s" uri="/struts-tags"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title><s:text name="失败页面"/></title>
- <meta http-equiv="Content-Type" content="text/html; charset=GBK">
- </head>
- <body>
- <s:text name="登录失败"/>
- </body>
- </html>
5 在src目录下建立struts.xml文件,其内容为:
- <?xml version="1.0" encoding="GBK"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
- "http://struts.apache.org/dtds/struts-2.1.7.dtd">
- <!-- 指定Struts 2配置文件的根元素 -->
- <struts>
- <!-- 指定国际化编码所使用的字符集 -->
- <constant name="struts.i18n.encoding" value="GBK" />
- <!-- 所有的Action定义都应该放在package下 -->
- <package name="action" extends="struts-default">
- <action name="login" class="com.example.action.LoginAction">
- <!-- 定义三个逻辑视图和物理资源之间的映射 -->
- <result name="error">/error.jsp</result>
- <result name="success">/welcome.jsp</result>
- </action>
- </package>
- </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,其内容为:
- package com.example.action;
- import com.opensymphony.xwork2.ActionSupport;
- public class LoginAction extends ActionSupport
- {
- private static final long serialVersionUID = 1L;
- 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;
- }
- //定义处理用户请求的execute方法
- public String execute() throws Exception
- {
- if (getUsername().equals("zheng") && getPassword().equals("123456") )
- {
- return "success";
- }
- else
- {
- return "error";
- }
- }
- }
注意:这个类中的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实现登录流程的更多相关文章
- struts2 框架处理流程
struts2 框架处理流程 流程图如下: 注意:StrutsPrepareAndExecuteFilter替代了2.1.3以前的FilterDispatcher过滤器,使得在执行Action之前可以 ...
- 如何设计一个 App 的注册登录流程?
移 动设备发力之前的登录方式很简单:用户名/邮箱+密码+确认密码,所有的用户登录注册都是围绕着邮箱来做.随着移动设备和社交网络的普及,邮箱不再是唯 一,渐渐的出现了微博,QQ,微信等第三方登录方式,手 ...
- 用户登录流程详解 +volley(StringRequest)
在实习期间由于要求使用volley,所以第一次开始接触volley,从一开始的迷茫陌生,到疯狂的查找各种资料,通过在项目中用到的实际问题,我想做一些总结,所以写了这篇文章.下面我将介绍我理解的用户登录 ...
- Struts2的基本流程的详细介绍
Struts2基本流程 概述: Struts2框架由三部分构成:核心控制器.业务控制器和用户实现的业务逻辑组件.在这三部分中,struts2框架提供了核心控制器StrutsPrepareAndExec ...
- Struts2的运行流程以及关键拦截器介绍
Struts2的运行流程 1.ActionProxy是Action的一个代理类,也就是说Action的调用是通过ActionProxy实现的,其实就是调用了ActionProxy.execute()方 ...
- Java Struts2 的请求处理流程详解
一.Struts2的处理流程: 客户端产生一个HttpServletRequest的请求,该请求被提交到一系列的标准过滤器(Filter)组建链中(如ActionContextCleanUp:它主要是 ...
- struts2处理请求流程详解
struts2大概分为两块:一是struts2系统初始化,二是struts2处理请求,对请求作出响应. 下面就说说个人对struts2对请求处理流程的理解: 下面是StrutsPrepareAndEx ...
- 二维码闪电登录流程详解,附demo(1/2)
二维码,最早发明于日本,它是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设 ...
- 微信小程序登录流程
小程序登录流程 参考 app.js需要做的 1,首先通过wx.login()拿到code,成功之后,发送数据,请求接口,把code发送给后端,换区openid,sessionKey,unionId,把 ...
随机推荐
- NYOJ 116 士兵杀敌二
士兵杀敌(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军经常 ...
- 计算机编码中的换行 CR与LF
以下的文字为转载,但是有错误的地方,博主自行进行了修正和补充,用红色标示. 原文地址在这里. ------------ 转载起始 ------------- “回车”(Carriage Return) ...
- 620. Not Boring Movies
X city opened a new cinema, many people would like to go to this cinema. The cinema also gives out a ...
- PTA L2-002 链表去重 团体程序设计天梯赛-练习集
L2-002 链表去重(25 分) 给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉.即对每个键值 K,只有第一个绝对值等于 K 的结点被保留.同时,所有被删除的结点须被保存在另 ...
- Spring学习的切入点
spring是个顶级的框架,这话没毛病.很多人想把它征服,想去阅读它的源码,弄懂它的设计思想,从中学到精粹. 但是很多次打开后,看到庞大的体系结构,就懵逼了,不知从何入手. 我在这里总结下学习spri ...
- (转)求质数算法的N种境界[1] - 试除法和初级筛法
★引子 前天,俺在<俺的招聘经验[4]:通过笔试答题能看出啥?>一文,以"求质数"作为例子,介绍了一些考察应聘者的经验.由于本文没有政治敏感内容,顺便就转贴到俺在CSD ...
- POJ1067 取石子游戏 威佐夫博弈 博弈论
http://poj.org/problem?id=1067 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可 ...
- BZOJ 3437 小P的牧场(斜率优化DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3437 [题目大意] n个牧场排成一行,需要在某些牧场上面建立控制站, 每个牧场上只能建 ...
- 【枚举】XVII Open Cup named after E.V. Pankratiev Stage 4: Grand Prix of SPb, Sunday, Octorber 9, 2016 Problem D. Cutting Potatoes
题意:有n个土豆,每个有体积V(i),你可以将每个土豆等分为不超过K份,问你最大块和最小块比值最小为多少. 直接枚举切法,只有n*K种,然后保证其为最大块,去算其他块的切法,即让其他块切得尽可能大即可 ...
- 【BFS】bzoj2252 [2010Beijing wc]矩阵距离
要注意一开始将所有为'1'的点入队,然后通过一次BFS去更新所有点的距离,直到无法更新为止. #include<cstdio> #include<queue> #include ...