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”,点击“提交查询内容”,显示页面
退回登录页面,输入错误的用户名和密码,或什么都不输,点击“提交查询内容”,显示页面
相关文章
- linux终端用户登录流程
- css流程图、步骤图,流程线与环节分别实现,支持单环节、多环节情况。scss生成CSS
- java实现加密电话号码,有具体的加密流程注释
- u-boot启动流程分析(2)_板级(board)部分
- Web用户的身份验证及WebApi权限验证流程的设计和实现(续)
- Web用户的身份验证及WebApi权限验证流程的设计和实现(尾)
- Spark Streaming + Spark SQL 实现配置化ETL流程
- 第四章 Python运算符和流程控制
- TDengine 离线升级流程
- Nginx proxy反向代理 缓存处理流程
- mybatis架构流程
- Atitit 项目管理 提升开发效率的项目流程方法模型 哑铃型 橄榄型 直板型
- Atitit。Tree文件解析器的原理流程与设计实现 java c# php js
- SAP Spartacus checkout 流程的扩展(extend)实现介绍
- Database之SQL:SQL语句操作三类(数据定义语句DDL/数据操作语句DML/数据控制语句DCL/其他基本语句、流程控制语句、批处理语句)概念及其代码实现案例之详细攻略
- Database之SQL:SQL语句操作三类(数据定义语句DDL/数据操作语句DML/数据控制语句DCL/其他基本语句、流程控制语句、批处理语句)概念及其代码实现案例之详细攻略
- NLP之TEA:自然语言处理之文本情感分析的简介、算法、应用、实现流程方法、案例应用之详细攻略
- Java责任链模式:优雅解耦系统处理流程,实现高效灵活的请求处理与分发
- android8.0 Launcher源码 (12) --- Launcher 启动流程 桌面布局参数
- 用DirectShow实现视频採集-流程构建
- 用户行为分析流程
- SolidWorks 导出工程图时流程
- Laravel教程 五:MVC的基本流程
- 海思MPP之VDEC(视频解码)的接口调用流程分析
- DataScience:风控场景之金融评分卡模型的简介、构建(逻辑回归)&开发(转评分卡)、使用过程(线上实现)、完整流程之详细攻略
- SLAM:SLAM相机简介、SLAM五步流程简介(VO+BEO+LCD+M)之详细攻略
- BlockChain:Python一步一步实现(流程最清楚)区块链底层技术流程图(理解一目了然,值得收藏)
- Java责任链模式:优雅解耦系统处理流程,实现高效灵活的请求处理与分发
- 深度学习项目:图片数据建模流程:猫狗分类,83.6%识别率【附完整源码】
- pytorch 26 科学炼丹(训练)方式之——魔改网络(给模型做外科手术,实现module的删除、修改与添加,forward流程的修改)
- ZYNQ之路--初级开发流程介绍