package cn.lnu.web.tag.example;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.SkipPageException;
import javax.servlet.jsp.tagext.SimpleTagSupport;
public class RefererTag extends SimpleTagSupport {
private String site;
private String page;
public void setSite(String site) {
this.site = site;
}
public void setPage(String page) {
this.page = page;
}
@Override
public void doTag() throws JspException, IOException {
// TODO Auto-generated method stub
PageContext pageContext=(PageContext) this.getJspContext();
HttpServletRequest request=(HttpServletRequest) pageContext.getRequest();
HttpServletResponse response=(HttpServletResponse) pageContext.getResponse();
//1���õ�������referer
String referer=request.getHeader("referer");
//2���ж������ߵ�ҳ���Dz���Ҫ����������վ
if(referer==null || !referer.startsWith(site)){//�ǵ�����
if(page.startsWith(request.getContextPath())){
response.sendRedirect(page);
}else if(page.startsWith("/")){
response.sendRedirect(request.getContextPath()+page);
}else{
response.sendRedirect(request.getContextPath()+"/"+page);
}
//����ǵ����ߣ�jsp���µ�ҳ��Ͳ��������߲鿴
throw new SkipPageException();
}
}
}