用Filter程序实现静态HTML页面的访问保护
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了用Filter程序实现静态HTML页面的访问保护,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2719字,纯文字阅读大概需要4分钟。
内容图文
今天为练习Filter的用法编写了一个小程序.
当用户通过article的超链接读取文章的时候,会通过Filter进行检测有没有登录.只有登录的读者才能跳到文章页面,否则跳到登录页面.
文章就用简单的article1 和article2 的html页面来表示
这是Filter的代package a2;
import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import com.sun.jersey.spi.dispatch.RequestDispatcher; public class LogonFilter implements Filter { @Override publicvoid destroy() { // TODO Auto-generated method stub } @Override publicvoid doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException { //这里将ServletRequest转化为子类处理类HttpServletRequest HttpServletRequest req=(HttpServletRequest) request; //获得Session会话 HttpSession session=req.getSession();
//判断session里面是否有用户名属性 if(session.getAttribute("logonUser")==null) { //获得URL去掉前面部分,然后转发为相对路径 String requestURI=req.getRequestURI(); String contextPath=req.getContextPath(); String forwardURI=requestURI.substring(contextPath.length()); session.setAttribute("viewPage", forwardURI); javax.servlet.RequestDispatcher rd=req.getRequestDispatcher("/logon.jsp"); rd.forward(req, response); } else{
//如果没有用户名也要放行 chain.doFilter(request, response); } } @Override publicvoid init(FilterConfig filterConfig) throws ServletException { } }
下面是article的html页面,当访问它的超链接的时候就会通过Filter,Filter在web.xml中设置.
<!DOCTYPE html> <html> <head> <title>articles.html</title> <meta name="keywords" content="keyword1,keyword2,keyword3"> <meta name="description" content="this is my page"> <meta name="content-type" content="text/html; charset=UTF-8"> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body> <a href="article1.html" target="_blank">阅读第1篇文章</a> <a href="article2.html" target="_blank">阅读第2篇文章</a> </body> </html>
下面是web.xml的配置
<filter> <filter-name>LogonFilter</filter-name> <filter-class>a2.LogonFilter</filter-class> </filter> <filter-mapping> <filter-name>LogonFilter</filter-name> <url-pattern>/articles.html</url-pattern> </filter-mapping>
总结:开始运行的时候发现article1和2 会乱码,但是article没有.当手动改变浏览器的编码方式的时候.乱码就没有了.通过以前所学的知识可以知道这是因为浏览器默认的编码方式是服务器的编码方式.浏览器的默认编码方式就是html翻译成Servlet源文件的编码.所以在应该在翻译之前把编码方式设置一下问题就解决了.
原文:http://www.cnblogs.com/Baronboy/p/5335486.html
内容总结
以上是互联网集市为您收集整理的用Filter程序实现静态HTML页面的访问保护全部内容,希望文章能够帮你解决用Filter程序实现静态HTML页面的访问保护所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。