登录拦截器的应用 | 学习笔记

简介: 快速学习登录拦截器的应用,介绍了登录拦截器的应用系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Java Web开发系列课程 - Struts2框架入门登录拦截器的应用】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/537/detail/7317


登录拦截器的应用


目录:

一.对于登陆权限的控制

二.Struts.xml 的配置

三.jsp 页面

四.action 代码

五.登录成功页面


一.对于登陆权限的控制

拦截器的实现

pub1ic class LoginInterceptor extends AbstractInterceptor{

@Overridepublic String intercept(ActionInvocationinvocation)throwsException{

//判断是否是login.action如果是则直接执行下一个拦截器//如果不是则判断是否登录,如果登录执行下一个拦截器//如果没有则返回登录页面//actionName.没有扩展名String actionName=invocation.getProxy().getActionName();

if("login".equals(actionName)){return invocation.invoke();Object obj =invocation.getInvos ationContext().getSession().get("user");if(obj==nu11){//没有登录return Action.LOGIN;}return invocation.invoke();successjsp S


二.Struts.xml 的配置

<struts><package name="default"extends= "struts-default"namespace="/"><!--配置拦截器--><interceptors><interceptor name= "time"class="cn.sxt.interceptor.TimeInterceptor"/><interceptor name="loginInterceptor"class="cn.sxt.interceptor.LoginInterceptor"/><!--一个拦截器栈中,可以包含多个拦截器的引用拦截器栈的引用和拦截器一致<interceptor-stack name="myStack"><!--引用拦截器-->
<interceptor-ref name="time"/><!--引用默认的拦截器栈;引用拦截器和引用拦截器栈的方式样--><interceptor-ref name= "defaultStack"/></interceptor-stack></interceptors><!--定义默认的拦截器/栈-->default-interceptor-ref name="myStack"/><global-results><result name= "login">/1ogin.jsp</result></global-results><action name="hello"class= "cn.sxt.action.HelloAction">

<result>/WEB-INF/index.jsp</resu1t></action><action name= "login" class="cn.sxt.action.LoginAction">

<result>/success.jsp</resu1t></action></package>

<struts>

 

三.jsp 页面

<%@ page language="java"import="java.util.”pageEncoding="UTF-8"%>

<%String path=request.getContextPath();String basePath=request.getScheme()+"://"+request.getServerName( )+":"

%><DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"〉<html〉<head><base href=”<%=basePath%>”〉<title>My JSP 'index.jsp' starting page</title><meta  http-equiv="pragma"content="no-cache”><meta http-equiv="cache-control”content="no-cache”〉<meta http-equiv="expires”content="0"〉<meta http-equiv="keywords”content="keyword1,keyword2,keyword3"><meta http-equiv="description"content="This is my page">

<!--<link rel="stylesheet" type="text/css"href="styles.css">.--></head><body><form action= "user/login.action"method= "post">

用户名:

<input type="text"name="name"/><br>
密码:

<input type="password"name="pwd"/><br> <input type="submit"value="登录"/></form></body></html>

 

四、action 代码

package cn.sxt.action;import com.opensymphony.xwork2.ActionContext;public class LoginAction private String name;private String pwd;//处理方法public String execute()System.out.println(name+"---"+pwd); .if("siggy".equals(name )&&"1111".equals(pwd))ActionContext.getContext().getSession().put("user",name);return"success";elsereturn"login";public String logout()System.out.println("退出");

return "success";public String getName()

return name;public void setName(String name)

this.name=name;public String getPwd()

return pwd;public void setPwd(String pwd)

this.pwd.pwd;

 

五、登录成功页面

<%@page language= "java"import="java.util.''pageEncontext

<%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitio

<html><head><base href= "<%=basePlath%>"><title>My JSP'index.jsp'starting page</title><meta http-equiv="keywords"content="keyword1,keyword2,keyword3>

<meta http-equiv="description"content="This is my<!--<link rel="stylesheet" type="text/css" href="style- -></head>

<body>
用户名:

$[name]<br><a href= "hello.action?name=zhangsan">hellok/a>

</body>

</html>

相关文章
|
前端开发
从0搭建Vue3组件库(七):使用 gulp 打包组件库并实现按需加载
从0搭建Vue3组件库(七):使用 gulp 打包组件库并实现按需加载
607 0
|
安全 Java
【深入理解同步器AQS】
【深入理解同步器AQS】
501 0
|
Shell 网络安全 开发工具
手把手教你配置Git客户端上传代码至Gitlab仓库
手把手教你配置Git客户端上传代码至Gitlab仓库
516 1
手把手教你配置Git客户端上传代码至Gitlab仓库
|
7月前
|
Web App开发 搜索推荐 安全
macOS Sonoma 14.7.6 (23H626) 正式版 ISO、IPSW、PKG 下载
macOS Sonoma 14.7.6 (23H626) 正式版 ISO、IPSW、PKG 下载
717 6
macOS Sonoma 14.7.6 (23H626) 正式版 ISO、IPSW、PKG 下载
|
机器学习/深度学习 人工智能 算法
|
前端开发 C++ 容器
Marp 教程:实现分栏和其他高级排版技巧
本文介绍了如何在 Marp 中实现分栏和其他高级排版技巧。Marp 是一个基于 Markdown 的幻灯片制作工具,结合 VSCode 的强大编辑功能,可以让你的 PPT 制作更加高效和专业。文章详细讲解了安装 VSCode 和 Marp 插件、Marp 的基本结构、使用 CSS 实现分栏、多列文本、浮动元素和网格布局等技巧。
|
机器学习/深度学习 算法
探索支持向量机(SVM)的奥秘:从理论到实践
探索支持向量机(SVM)的奥秘:从理论到实践
|
关系型数据库 MySQL Apache
Discuz贴吧建站的搭建及维护(windows系统)
Discuz贴吧建站的搭建及维护(windows系统)
465 0
|
关系型数据库 MySQL 数据库连接
UiPath 连接 Mysql 报错: 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
UiPath 连接 Mysql 报错: 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配
625 0
|
Java
SpringBoot 配置多数据源
SpringBoot 配置多数据源
209 0