前两篇已经简单为大家介绍了一下,有关Filter接口的知识,本篇就让我们以一个登录小功能,来具体实现一下过滤器的作用,便于大家掌握。具体为大家介绍一下如何使用Filter对访问进行过滤,及如何防止中文乱码的问题,内容不多,大家只要简单一练习便可以掌握。

 1、登录表单:

  和一般的表单没有任何区别,大家可以新建一个Login.jsp作为登录界面,在其中添加一个表单即可。

<body>
<center>
<form method="post" action="<%=request.getContextPath() %>/servlet/login" enctype="application/x-www-form-urlencoded">
姓名:<input type="text" name="name">
密码:<input type="password" name="pwd">
<input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</center>
</body>

 2、select:

  既然是登录,就一定少不了我们select类,因为我们仅仅讨论过滤器的作用,在这里就不再连接数据库了,大家如有需要可以参看我的前几篇博客,对于数据库连接,有详细的讲解。我们的select代码:

public class login extends HttpServlet {

    /**
* Constructor of the object.
*/
public login() {
super();
} /**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
System.out.println("销毁select");
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request, response);
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");//防止中文乱码
response.setCharacterEncoding("utf-8");//防止中文乱码
String username = request.getParameter("name");//获得表单中用户的填写的姓名
String pwd = request.getParameter("pwd");//获得表单中用户输入的密码
if("小米".equals(username)&&"admin".equals(pwd)){//身份判断
HttpSession session = request.getSession();
session.setAttribute("username", username);
response.sendRedirect(request.getContextPath()+"/success.jsp");
}else{
response.sendRedirect(request.getContextPath()+"/error.jsp");
}
} /**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
System.out.println("初始化select");
} }

 2、success.jsp与error.jsp:

  为了达到极佳的用户体验,我们这里新建两个jsp界面,用于给用户反馈登录成功与否提醒。

 3、创建Filter类:

public class firstFilter implements Filter {

    FilterConfig config ;

    public void destroy() {

    }

    public void doFilter(ServletRequest Request, ServletResponse Response,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)Request; HttpServletResponse res = (HttpServletResponse)Response; //防止中文乱码
req.setCharacterEncoding("utf-8");
res.setCharacterEncoding("utf-8"); //Filter设置字符集
//req.setCharacterEncoding(config.getInitParameter("lanager"));
//res.setCharacterEncoding(config.getInitParameter("lanager")); HttpSession session = req.getSession();
String username = (String) session.getAttribute("username"); //System.out.println(new String(username.getBytes("ISO-8859-1"),"utf-8"));//防止中文乱码 System.out.println(username); // if(req.getRequestURI().indexOf("index.jsp")!=-1 || req.getRequestURI().indexOf("servlet/login")!=-1){
// arg2.doFilter(Request, Response);
// return ;
// } String noLoginPath = config.getInitParameter("noLoginPath");//获得我们设置的默认值
if(noLoginPath!=null){
String [] NoPath = noLoginPath.split(";");
for(int i=0; i<NoPath.length; i++ ){
if(req.getRequestURI().indexOf(NoPath[i])!=-1){
arg2.doFilter(Request, Response);
return ;
}
}
} if(username!=null){
arg2.doFilter(Request, Response);
//res.sendRedirect(req.getContextPath()+"/success.jsp");
}else{
res.sendRedirect(req.getContextPath()+"/index.jsp");
}
} public void init(FilterConfig arg0) throws ServletException {
config = arg0;
} }

  这里我们第一次使用了init()方法中的FilterConfig对象,该方法具体的作用是什么呢?我们在web.xml中配置我们的Filter时,设置的默认字段,可以通过其来获得。

 4、web.xml配置:

  这里我们第一次设置默认字段。

  

 5、运行测试:

  启动我们的项目,在地址栏输入工程名:http://localhost:8080/Test/index.jsp,进入登录界面,当我们登录成功后,复制一下地址栏的地址,然后打开一个新的浏览器,在地址栏直接访问刚刚拷贝的地址,我就会发现我们又回到了登录界面,这就表示我们的过滤器起作用了。当然我们的过滤器的功能远不止这些,剩下的就要靠到家自己摸索了。

 6、中文问题:

  在上面的代码中已经为大家介绍了一下有关防止中文乱码的问题,大家可以自行了解。

  到今天我们关于JSP基础知识的总结就真正的告一段落了,如果以上十二篇博客你均已学会,我保证做一个简单的动态网站不是什么问题,当然想做好一个网站,只有这些是远远不够的,大家还需要学习div+css以及JavaScript的知识,所谓师傅领进门,修行靠个人,祝大家在程序猿这条路上愈来愈好。

JSP网站开发基础总结《十二》的更多相关文章

  1. JSP网站开发基础总结《二》

    有了上一篇的学习,我相信大家对于JSP一定有了一定的认识,从今天开始我们真正开启JSP模式,如果你有HTML的基础,那学起JSP来也就方便了很多了,首先JSP做为网站开发语言,它与HTML有很多相似的 ...

  2. JSP网站开发基础总结《一》

    经过JAVASE的学习相信大家对JAVA已经不再陌生,那么JAVA都可以干什么呢?做算法.应用程序.网站开发都可以,从今天开始为大家奉上JAVAEE之JSP动态网站开发基础总结. 既然是动态网站开发, ...

  3. JSP网站开发基础总结《八》

    JSP的学习总结到本篇已经八篇了,内容比较多,但都是实战,本篇最后为大家介绍一个小效果:百度分页.就是当我们遍历的数据对象较多时,这时我们就会看到了这个效果了,那他是如何实现的呢?下面我们就一起学习一 ...

  4. JSP网站开发基础总结《七》

    按照计划本篇将为大家总结搜索功能的两种实现:确定搜索与模糊搜索.所谓精确搜索便是指,根据用户的输入的搜索内容,在数据库中寻找具有一一对应的关系的数据,一般都是用户在数据库中的主键值.而模糊搜索,是一种 ...

  5. JSP网站开发基础总结《四》

    经过前几篇的摸爬滚打,下面我们就开始我们真正的数据库操作了,本篇重点在于如何在网站端编写数据库操作语句,内容不多,就是我们常见的增删改查. 0.数据库对象创建: 在JAVASE基础知识总结时,就为大家 ...

  6. JSP网站开发基础总结《十三》

    继上一篇为大家补充过滤器类后,本篇为大家简单介绍一下如何实现验证码效果.验证码的作用是什么呢?1.防止恶意注册2.防止恶意提交3.防止盗取账户等等,总的来说验证码的存在就是为了,防止非人为的操作,不过 ...

  7. JSP网站开发基础总结《九》

    本篇属于附加篇,在之前的总结中给大家提到过一个关于登录状态验证的效果,当时是通过Session对象完成的,今天我查了一下,JSP为我们封装了一个用于过滤用的过滤器类Filter,通过它我们就可以非常轻 ...

  8. JSP网站开发基础总结《六》

    对于本篇需要总结的内容,量估计有点大,大家好好看哈,绝对全是干货,代码的已经运行测试,不存在问题,大家可以参考学习,下面开始本篇的内容. 1.添加数据到数据库: 如何用户在JSP页面的填写的信息输入到 ...

  9. JSP网站开发基础总结《九》(转)

    本篇属于附加篇,在之前的总结中给大家提到过一个关于登录状态验证的效果,当时是通过Session对象完成的,今天我查了一下,JSP为我们封装了一个用于过滤用的过滤器类Filter,通过它我们就可以非常轻 ...

随机推荐

  1. VIM使用(二) 浏览内核源代码

    为了实现类似SourceInsight功能,通过VIM+Ctags+Cscope+Taglist+Source Explore +NERD Tree实现. 一, 安装插件 1)安装Ctags 和Csc ...

  2. arrayLiist的四种遍历方法

    package com.test; import java.util.ArrayList;import java.util.Iterator;import java.util.List; public ...

  3. Linq To Xml基础

    <?xml version="1.0" encoding="utf-8" ?> <Books> <Category Order=& ...

  4. 《Memcache学习总结》[PDF]发布

    <Memcache学习总结>[PDF]发布 百度网盘共享: http://pan.baidu.com/s/1mgvayQO  版本号: V1.2 最后跟新: 2015-04-01 讨论组: ...

  5. 用canvas制作酷炫射击游戏--part3

    今天介绍下 游戏中的sprite模块,也就是构建玩家及怪物的模块.有了这个模块,就可以在咱们的游戏里加入人物了. 想必用过css的朋友都知道sprite,一种将需要加载的图片拼接在一张图里以减少请求的 ...

  6. 多语言配置--LogisticsPlatform物流平台系统

    先看:LanguageProvider.cs   中几个主要方法 1.读取默认语言 附user.ini文件: 2.获取语言类型 附LanguageType.xml 3.读取语言资源 附:   看ILa ...

  7. 伪元素小tips

    1.伪元素的是dom看不见的,表现为行内元素.我这里说的伪元素是指::before ::after.其他的像:first-letter :visited 则属于伪类. 2.因为dom不可见,所以伪元素 ...

  8. Java的UUID

    UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OS ...

  9. Git凭证存储(简单易懂,一学就会,认真看)

    今天给自己提了一个问题,当我们在github.com或者gitlab上面新建仓库,并克隆到本地,首次使用的时候,会被问及用户名密码,但是这两个信息存在哪里呢? 带着这个问题,我开始搜索,并在<P ...

  10. MVC模式下如何实现RegisterStartupScript等功能

    本文源于http://www.achtmaal.com/blog/asp-net-mvc-and-registerclientscriptinclude,非常感谢原文作者的智慧和分享 Register ...