日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

JavaWeb入门篇(6) 实现字符过滤器 解决全局字符乱码 实现模拟权限拦截

發(fā)布時(shí)間:2025/3/19 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaWeb入门篇(6) 实现字符过滤器 解决全局字符乱码 实现模拟权限拦截 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JavaWeb 入門篇(6.1) 過(guò)濾器 實(shí)現(xiàn)字符過(guò)濾器 實(shí)現(xiàn)模擬權(quán)限攔截

Filter(過(guò)濾器) 概述

  • 過(guò)濾器是一個(gè)對(duì)象,它對(duì)對(duì)資源(Servlet或靜態(tài)內(nèi)容)的請(qǐng)求或?qū)?strong>資源的響應(yīng)或兩者都執(zhí)行過(guò)濾任務(wù)。
  • 過(guò)濾器在doFilter方法中執(zhí)行過(guò)濾。 每個(gè)過(guò)濾器都可以訪問(wèn)一個(gè)FilterConfig對(duì)象,從中可以獲取其初始化參數(shù),還可以訪問(wèn)ServletContext,例如,它可以用于加載過(guò)濾任務(wù)所需的資源。
    在Web應(yīng)用程序的部署描述符中配置過(guò)濾器。
  • JavaWeb中的應(yīng)用場(chǎng)景:
    • 權(quán)限過(guò)濾
    • 字符編碼設(shè)置
    • 數(shù)據(jù)加密過(guò)濾器
    • 過(guò)濾垃圾請(qǐng)求
    • 等等 還有不少勒
  • 過(guò)濾器可以寫多個(gè),形成一個(gè)過(guò)濾器鏈。每個(gè)過(guò)濾器的作用都可以不一樣。一層一層判斷。

流程圖:

一、過(guò)濾器(Filter)實(shí)現(xiàn)字符編碼設(shè)置為UTF-8

使用過(guò)濾器設(shè)置字符編碼

import javax.servlet.*; import javax.servlet.annotation.WebFilter; import java.io.IOException;/*** @author crush*/ @WebFilter("/*") public class CharacterEncodingTest implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// filter的生命周期System.out.println("Filter初始化");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {request.setCharacterEncoding("UTF-8");response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=utf-8");System.out.println("過(guò)濾前");chain.doFilter(request,response);System.out.println("過(guò)濾后");}@Overridepublic void destroy() {System.out.println("Filter銷毀");} }

測(cè)試:

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;/*** @author Adimi*/ @WebServlet("/filter") public class FilterTest extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username = req.getParameter("username");PrintWriter writer = resp.getWriter();writer.print(username);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);} }

可以看到過(guò)濾器是生效的。

二、Filter 實(shí)現(xiàn)權(quán)限攔截

登錄的表單頁(yè)面

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>login</title> </head> <body> <c:if test="${cuowu!=null}">${cuowu} </c:if> <form action="${pageContext.request.contextPath}/login" method="post">用戶名:<input name="username" type="text">密碼:<input name="password" type="password"><input type="submit" value="Login"> </form> </body> </html>

User類(用戶類)

/*** @author crush*/ @Data /** get set 方法 */ @AllArgsConstructor /** 全參構(gòu)造 */ @NoArgsConstructor /** 無(wú)參構(gòu)造 */ @ToString /** toString方法 */ public class User {private String username;private String password; }

此處使用了Lombok,類上面的幾個(gè)注解代替了原來(lái)的幾個(gè)方法。看起來(lái)比較簡(jiǎn)潔。

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException; import java.io.PrintWriter;/*** @author crush*/ @WebServlet("/login") public class Login 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 {// 開啟sessionHttpSession session = req.getSession();// 獲取登錄的參數(shù)String username = req.getParameter("username");String password=req.getParameter("password");PrintWriter writer = resp.getWriter();// 判斷用戶名和密碼是否正確if(username.equals("user")&&password.equals("123456")){// 存sessionsession.setAttribute("user",new User(username,password));// 設(shè)置session的時(shí)間session.setMaxInactiveInterval(200);writer.print(username+" 恭喜你登錄成功!!!");}else{System.out.println("賬號(hào)或密碼錯(cuò)誤");resp.sendRedirect("/login.jsp");}} }

過(guò)濾器:

import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.IOException;/*** @author Adimi* @WebFilter("/user/*") * /user/* 的意思是過(guò)濾/user/下的所有請(qǐng)求* 例如:/user/1 、/user/main2 .... /user/xxx 等等 都會(huì)經(jīng)過(guò)這個(gè)過(guò)濾器*/ @WebFilter("/user/*") public class UserFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("初始化");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest httpServletRequest=(HttpServletRequest)request;HttpSession session = ((HttpServletRequest) request).getSession();User user =(User) session.getAttribute("user");if(user!=null){chain.doFilter(request,response);}else{request.setAttribute("cuowu","檢測(cè)到您還沒(méi)有登錄,無(wú)法訪問(wèn),請(qǐng)登錄后再訪問(wèn)!!!");request.getRequestDispatcher("/login.jsp").forward(request,response);}}@Overridepublic void destroy() {System.out.println("銷毀");} }

測(cè)試的Servlet:

import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;/*** @author crush*/ @WebServlet("/user/main") public class Main extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {PrintWriter writer = resp.getWriter();writer.print("恭喜你做出了登錄過(guò)濾的小Demo!!!");}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {super.doPost(req, resp);} }

自言自語(yǔ)

簡(jiǎn)單的一次記錄。
看完不給我點(diǎn)給贊,你還想逃嗎?不存在的。
留下你來(lái)過(guò)的足跡,一起學(xué)習(xí)。

總結(jié)

以上是生活随笔為你收集整理的JavaWeb入门篇(6) 实现字符过滤器 解决全局字符乱码 实现模拟权限拦截的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人黄色短视频在线观看 | 国产资源一区 | 国产日b视频 | 日本黄色免费 | 青草综合| 亚洲永久av | 欧美老肥妇做.爰bbww视频 | 国产无码精品合集 | 久久夜夜操妹子 | 欧美挤奶吃奶水xxxxx | 五十路毛片 | 国产在线精品一区二区 | 欧美亚洲一级片 | 超碰超在线| 国产伦精品一区二区三区免.费 | 精人妻无码一区二区三区 | 欧美一二三区在线观看 | 日韩久久av | 无套内谢的新婚少妇国语播放 | 日本手机看片 | 国产精品美女久久久久av爽 | 久久综合成人 | 美女国产一区 | 波多野吉衣毛片 | 国产亚洲精品熟女国产成人 | 国产青草视频 | 亚洲123区 | 亚洲av毛片 | 国产一区一区 | 久久欧美视频 | 五月情婷婷 | 亚洲桃色av | 捆绑无遮挡打光屁股调教女仆 | 男女插插插网站 | 国产免费中文字幕 | 久久久久久久久久久久久国产 | 奇米影视在线播放 | 成人一级影视 | 免费看黄色三级 | 亚洲图区综合 | 成人午夜又粗又硬又大 | 黑丝袜av | 国产日本一区二区三区 | 亚洲free性xxxx护士白浆 | 在线中文字幕av | 国产一区二区在 | 黄色九九 | 91无限观看| a天堂资源 | www.嫩草.com | 日本视频免费在线播放 | 婷婷五月小说 | 香蕉视频91| 中文亚洲av片不卡在线观看 | 日本一级片免费看 | 精产国产伦理一二三区 | 免费av大片 | 中文在线观看视频 | 亚洲AV不卡无码一区二区三区 | 91精品国产综合久久精品 | 精品人妻无码一区二区色欲产成人 | 国产又粗又猛又爽又黄91精品 | 国产又色又爽无遮挡免费动态图 | 国产91丝袜在线播放九色 | 日韩一级影片 | 成人在线一区二区三区 | 久久久久久久亚洲av无码 | 黄色免费在线观看网站 | 亚洲天堂福利视频 | 国产嫩草影院久久久久 | 午夜寂寞剧场 | 超碰这里只有精品 | 神马久久网站 | 国产精品wwww | 日本免费三区 | av播放在线 | 亚洲一区二区三区不卡视频 | 国产成人aⅴ | 播放美国生活大片 | 国产色网址 | jjzz黄色片 | 成人午夜av在线 | 青青草原成人 | 夜夜夜操操操 | 免费看av在线 | 天天爽一爽 | 日韩精品视频在线观看免费 | 欧美亚洲不卡 | www.久久久久 | 日本国产精品一区 | 美女mm131爽爽爽免费动视频 | 一级不卡 | 暖暖免费观看日本版 | 黄色一级免费片 | av免费一区 | 天天摸天天碰 | 亚洲精品18p | 寂寞午夜影院 | 亚欧在线 |