首先我们要实现两个过滤器其实很简单,我们需要准备好两个jsp一个是登录的jsp(我这里使用login.jsp),一个是登录成功的jsp(loginsuccess.jsp),一个servlet,两个过滤器,一个过滤器在 web 服务时,起用 UTF-8 编码,以处理 web 服务时的乱码问题。 另一个过滤器用来判断用户是否登录,其中我们要将登录成功的界面即loginsuccess.jsp放到/view界面下,我这个并不使用与数据库交互,只是简单的在servlet中来设置登录账号和密码

这里的简单结构示意图如下

因为比较简单,我们这里直接上代码

LoginServlet.java

package com.chen;import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;public class LoginServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HttpSession session = req.getSession();//获取用户名和密码String username = req.getParameter("username");String password = req.getParameter("password");System.out.println(username+password);session.setAttribute("username", username);//验证用户名和密码if ("admin".equals(username) && "123456".equals(password)){//验证成功req.getRequestDispatcher("/view/loginsuccess.jsp").forward(req, resp);//将用户状态存入session域}else{req.setAttribute("errerMsg", "用户名密码错误");req.getRequestDispatcher("/login.jsp").forward(req, resp);}}}

接下来是过滤器,过滤处理乱码的

SetCodingFilter.java

package com.filter;import javax.servlet.*;
import java.io.IOException;public class SetCodingFilter implements Filter {private String coding = null;public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stub//设置请求编码request.setCharacterEncoding(coding);//调用下一个过滤器,(如果没有,就把请求提交给请求目标)chain.doFilter(request, response);}public void init(FilterConfig config) throws ServletException {//获取filter初始化参数(web.xml文件中配置的参数)coding = config.getInitParameter("coding");}
}

这里是UserOnlineFilter.java也就是验证用户登录的

package com.filter;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;public class UserOnlineFilter implements Filter {public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest Servletrequest,ServletResponse Servletresponse, FilterChain filterchain)throws IOException, ServletException {// TODO Auto-generated method stubHttpServletRequest request = (HttpServletRequest)Servletrequest;HttpServletResponse response = (HttpServletResponse)Servletresponse;HttpSession session = request.getSession();String username = (String)session.getAttribute("username");//验证用户是否登录(session对象中是否存在用户信息if(username==null){response.sendRedirect(request.getContextPath()+"/login.jsp");}else{filterchain.doFilter(Servletrequest, Servletresponse);}}public void init(FilterConfig filterconfig) throws ServletException {// TODO Auto-generated method stub}
}

这是登录成功的loginsuccess.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录成功界面</title>
</head>
<body>
<h1 align="center">恭喜你登录成功</h1></body>
</html>

这个是web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><filter><filter-name>SetCodingFilter</filter-name><filter-class>com.filter.SetCodingFilter</filter-class><init-param><param-name>coding</param-name><param-value>UTF-8</param-value></init-param></filter><filter-mapping><filter-name>SetCodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>UserOnlineFilter</filter-name><filter-class>com.filter.UserOnlineFilter</filter-class></filter><filter-mapping><filter-name>UserOnlineFilter</filter-name><!-- 这个路径只用于数据交互页面。不能用"/"。否则的话就进不了页面了 --><url-pattern>/view/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.chen.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/loginServlet</url-pattern></servlet-mapping>
</web-app>

这个是login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<div align="center">
<h1>login</h1>
<form action="loginServlet" method="post">username:<input type="text" name="username" placeholder="username"> <br/>password:<input type="password" name="password" placeholder="password"> <br/><br><input type="submit" value="login"/>
</form>
</div>
</body>
</html>

我们所用到的就是上面这么多,谢谢。

编写两个过滤器,一个过滤器在 web 服务时,起用 UTF-8 编码,以处理 web 服务时的乱码问题。 另一个过滤器用来判断用户是否登录,只有登录用户方可访问/view 子目录。相关推荐

  1. Java黑皮书课后题第8章:**8.6(代数:两个矩阵相乘)编写两个矩阵相乘的方法。编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的乘积

    **8.6(代数:两个矩阵相乘)编写两个矩阵相乘的方法.编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的乘积 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 **8.6( ...

  2. Java黑皮书课后题第8章:*8.5(代数:两个矩阵相加)编写两个矩阵相加的方法,编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的和

    *8.5(代数:两个矩阵相加)编写两个矩阵相加的方法,编写一个测试程序,提示用户输入两个3*3的矩阵,然后显示它们的和 题目 题目描述与运行示例 破题 代码 题目 题目描述与运行示例 8.5(代数:两 ...

  3. Java黑皮书课后题第7章:7.8(求数组的平均值)使用下面的方法头编写两个重载的方法,返回数组的平均数。编写一个测试程序,提示用户输入10个double型值,然后调用这个方法显示平均值

    7.8(求数组的平均值)使用下面的方法头编写两个重载的方法,返回数组的平均数.编写一个测试程序,提示用户输入10个double型值,然后调用这个方法显示平均值 题目 题目描述 破题 代码 运行实例 题 ...

  4. Java黑皮书课后题第6章:**6.3(回文整数)使用下面的方法头编写两个方法:……使用reverse方法实现isPalindrome。如果一个数字的逆序数和它自身相等,这个数就称为回文数。

    6.3(回文整数)使用下面的方法头编写两个方法:--使用reverse方法实现isPalindrome.如果一个数字的逆序数和它自身相等,这个数就称为回文数. 题目 题目概述 破题:假设没有提示语句( ...

  5. java编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z。打印顺序为12A34B56C….5152Z。即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替

    2.编写两个线程,一个线程打印1-52的整数,另一个线程打印字母A-Z.打印顺序为12A34B56C-.5152Z.即按照整数和字母的顺序从小到大打印,并且每打印两个整数后,打印一个字母,交替循环打印 ...

  6. Oracle新建一个可以访问其他用户的表结构的用户

    最近在使用oracle的时候,为了安全,需要将指定表分配给一个新用户进行查看数据,看了很多例子,都不是很好,说的很模糊,后来经过实践,找出来了一个比较适当的方法,下面给大家分享. system:数据库 ...

  7. Apache(httpd)配置--用户认证,域名跳转和访问日志配置

    一.用户认证 用户认证功能就是在用户访问网站的时候,需要输入用户名密码才能进行访问.一些比较好总要的站点和网站后台都会加上用户认证,以保证安全. 实例:下面对zlinux.com站点来做一个全站的用户 ...

  8. Nginx默认虚拟主机、 Nginx用户认证、Nginx域名重定向、访问日志·····

    2019独角兽企业重金招聘Python工程师标准>>> Ngninx默认虚拟主机 1.vim /usr/local/nginx/conf/nginx.conf //增加 2.incl ...

  9. 进Linux系统单用户模式,Linux进入单用户模式的两种方法

    单用户模式的作用 在使用Linux系统中,维护人员经常会碰到一个问题,就是在拥有root账号权限和密码的用户中,总是会出现忘记root密码的情况. 遇到这种情况,一般情况下,维护人员就会通过最常用的方 ...

最新文章

  1. 招行java开发面试,面经:Java后台开发-招行网络科技
  2. laravel 文件上传
  3. 转载:Hyper-V管理器和SCVMM 2008 R2区别
  4. 图解LSTM神经网络架构及其11种变体(附论文)
  5. 一般人不清楚--博士群体的择偶标准是什么?
  6. 关于Panel隐藏横向滚动条
  7. flink sql是否支持emit策略
  8. Fiddler 学习笔记
  9. 同一机器部署多个JVM
  10. html源码加密ensure-china_php源码加密方法详解
  11. LinQ To XML——用LinQ查询XML
  12. XMLHTTP Get HTML页面时的中文乱码之完全客户端Script解决方案
  13. git管理工具使用-本地通过git命令拉取项目
  14. win10壁纸不能幻灯片放映_教你巧妙解决雨林木风Win10系统中背景桌面无法自动播放幻灯片...
  15. 左耳朵耗子:我做系统架构的一些原则
  16. iOS10全新方法实现推送+deviceToken无法获取或无效的解决
  17. Shell 快捷键助你一臂之力
  18. 高性能MySQL读书摘要(五)创建高性能的索引
  19. java实现极简单的 TXT小说阅读器(第二版)
  20. 流水线生产,精益生产,TPS和TOC的缓冲管理

热门文章

  1. 进销存软件商品报价管理-报价单
  2. 概率统计Python计算:卡方分布分位点计算
  3. 名帖51 王羲之 小楷《佛遗教经》
  4. ConcurrentHashMap比其他并发集合的安全效率要高一些?
  5. 基于微信小程序的毕业设计选题
  6. “刘畊宏女孩”掀起居家云健身热潮,海外健身市场引流变现新方向?
  7. 前端实现HTML转PDF下载的两种方式
  8. SVN如何对已经提交的注释进行再次修改?
  9. Pro Android学习笔记(一五五) 传感器(5) 磁场传感器和方位(上)
  10. 笔记本电脑怎么做计算机题吗,笔记本怎么重装系统 笔记本重装电脑简单教程【图文教程】...