背景:用户登陆后才能访问的页面,在用户没有登陆时访问要对其进行拦截(可以使用拦截器),这里介绍一种标签的方式拦截
使用步骤
- 定义标签类
/* 定义标签类(需要继承SimpleTagSupport)*/
public class LoginTag extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
PageContext pageContext = (PageContext) super.getJspContext();
HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();
HttpSession session = pageContext.getSession();
User login_user = (User) session.getAttribute("login_user");
if(login_user==null){
//利用response进行页面间的响应,重定向到其他页面
response.sendRedirect(request.getContextPath()+"/client/error.jsp");
}
}
}
- 在WEB-INF文件夹下定义对应的tld文件
<?xml version="1.0" encoding="utf-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<!-- 描述 自定义标签版本的一种描述 -->
<description>Login tag</description>
<!-- 显示的名称 导包进行的一个展示 -->
<display-name>Login core</display-name>
<!-- 版本号 -->
<tlib-version>1.0</tlib-version>
<!-- 短名 -->
<short-name>hjy</short-name>
<!-- uri :导包 -->
<uri>http://hjy.login-tags</uri>
<!-- 定义一个标签 -->
<tag>
<!-- 标签名 -->
<name>login</name>
<!-- 标签处理类 -->
<tag-class>com.bookstore.utils.LoginTag</tag-class>
<!-- 设置标签为空 -->
<body-content>empty</body-content>
<!-- 定义标签的属性 -->
<!-- 无-->
</tag>
</taglib>
- 在jsp页面使用,使用前要引入标签
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="pp" uri="http://hjy.login-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>电子书城</title>
</head>
<body class="main">
<pp:login />
<div>登陆后才能访问的其他内容</div>
</body>
</html>