1. Tag case-developing anti-leech labels
Leeching refers to the content that service providers do not provide services themselves. They use technical means to bypass the end user interfaces (such as advertisements) of other interests ), provide the service content of other service providers directly to end users on their own websites to defraud end users of browsing and clicking rates. Beneficiaries do not provide resources or provide few resources, but real service providers do not receive any benefits.
One solution -- restrict reference pages
The anti-leech principle is that the server obtains the website address of the user's submitted information, and then compares it with the address of the real server. If it is consistent, it indicates that the website is submitted or submitted for the site that you trust, otherwise, it is considered as leeching.
Objective: To develop tags
<Class3g: referer site = "http: // drinkeye: 8080" page = "/index. jsp"/>
Site: trusted site, only site requests allowed
Page: The correct link page, which is automatically transferred to this page after leeching is found
Procedure
1) Tag processing class
<Span style = "font-size: 16px;"> public void doTag () throws JspException, IOException {
PageContext pageContext = (PageContext) this. getJspContext ();
HttpServletRequest request =
(HttpServletRequest) pageContext. getRequest ();
HttpServletResponse response =
(HttpServletResponse) pageContext. getResponse ();
String referer = request. getHeader ("referer ");
System. out. println (request. getContextPath ());
If (referer = null |! Referer. startsWith (site )){
// Determine whether leeching is successful
</Span>
<Span style = "font-size: 16px;"> // Based on the page property value, link redirection refers to the correct page for accessing the leeching content
String contextPath = request. getContextPath ();
If (page. startsWith (contextPath )){
Response. sendRedirect (page );
} Else if (page. startsWith ("/")){
Response. sendRedirect (contextPath + page );
} Else {
Response. sendRedirect (contextPath + "/" + page );
}
Throw new SkipPageException ();
}
}
</Span>
2) description file
3) use tags on the Content Page
2. Tag case-<c: if> tag
Tag function:
<Span style = "font-size: 16px;"> <class3g: if exp = "$ {psw = null}">
User = null <br>
</Class3g: if>
<%
Session. setAttribute ("user", "Tom ");
%>
<Class3g: if exp = "$ {user! = Null} ">
User! = Null <br>
</Class3g: if>
</Span>
Processing class
<Span style = "font-size: 16px;"> public class MyIfTag extends SimpleTagSupport {
Private boolean exp;
Public void setExp (boolean exp ){
This. exp = exp;
}
Public void doTag () throws JspException, IOException {
If (exp ){
JspFragment jf = this. getJspBody ();
Jf. invoke (null );
}
}
}
</Span>
3. Tag case if else tag
<Span style = "font-size: 16px;"> <class3g: choose>
<Class3g: when exp = "$ {user! = Null} ">
Aaaaaaaaaa
</Class3g: when>
<Class3g: otherwise>
Bbbbbbbbbbbbbbbbb
</Class3g: otherwise>
</Class3g: choose>
</Span>
Steps:
L write the choose tag without attributes, but there is a member invoked. You need to write the setter and getter methods for it. Note that the TAG body needs to be output in the doTag.
L write the child tag when tag with the boolean attribute exp,
L write the sub-tag otherwise tag, which has no attributes and no member variables.
From the path of the mouse programmer