1. 标签处理类
1 public class MyReferer extends BodyTagSupport {
2 private String site;
3 private String back;
4 public String getSite() {
5 return site;
6 }
7 public void setSite(String site) {
8 this.site = site;
9 }
10 public String getBack() {
11 return back;
12 }
13 public void setBack(String back) {
14 this.back = back;
15 }
16 public int doEndTag() throws JspException {
17 // 获取JSP上下文环境对象
18 PageContext pageContext = this.pageContext;
19 // 获取到request对象
20 HttpServletRequest request = (HttpServletRequest)pageContext.getRequest();
21 // 判断
22 String header = request.getHeader("referer");
23 if(header != null && header.startsWith(getSite())){
24 // 执行后续的页面
25 return Tag.EVAL_PAGE;
26 }else{
27 // 页面的重定向
28 HttpServletResponse response = (HttpServletResponse)pageContext.getResponse();
29 try {
30 response.sendRedirect(getBack());
31 } catch (IOException e) {
32 e.printStackTrace();
33 }
34 // 不执行
35 return Tag.SKIP_PAGE;
36 }
37 }
38 }
2. 描述文件
1 <?xml version="1.0" encoding="UTF-8"?>
2 <taglib
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
6 version="2.1">
7 <!-- 2. 编写标签库描述文件 -->
8 <tlib-version>1.0</tlib-version>
9 <short-name>jnb</short-name>
10 <tag>
11 <name>referer</name>
12 <tag-class>cn.itcast.custom.MyReferer</tag-class>
13 <body-content>empty</body-content>
14 <attribute>
15 <name>site</name>
16 <required>true</required>
17 <rtexprvalue>true</rtexprvalue>
18 </attribute>
19 <attribute>
20 <name>back</name>
21 <required>true</required>
22 <rtexprvalue>true</rtexprvalue>
23 </attribute>
24 </tag>
25 </taglib>
3. 引入和使用
1 <%@taglib uri="/WEB-INF/referer.tld" prefix="my"%>
2 <my:referer site=http://localhost:8080/day11/list.jsp
3 back="/day11/list.jsp"/>
时间: 2024-10-12 23:28:52