時間:2023-05-24 22:18:02 | 來源:網(wǎng)站運(yùn)營
時間:2023-05-24 22:18:02 來源:網(wǎng)站運(yùn)營
大數(shù)據(jù)從入門到深入:JavaEE 之 動態(tài)網(wǎng)頁開發(fā)基礎(chǔ) 過濾器的簡單使用:package com.hnxy.web;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;/** * Servlet Filter implementation class EncodingFitler */public class EncodingFitler implements Filter { /** * Default constructor. */ public EncodingFitler() { // TODO Auto-generated constructor stub } /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub // place your code here // pass the request along the filter chain chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub }}
<filter> <display-name>EncodingFitler</display-name> <filter-name>EncodingFitler</filter-name> <filter-class>com.hnxy.web.EncodingFitler</filter-class> </filter> <filter-mapping> <filter-name>EncodingFitler</filter-name> <url-pattern>/EncodingFitler</url-pattern> </filter-mapping>
url-Pattern 設(shè)置攔截過則 /* 代表任何對servlet的請求 過濾器都要先攔截處理后再交給具體 servlet <filter> <display-name>EncodingFitler</display-name> <filter-name>EncodingFitler</filter-name> <filter-class>com.hnxy.web.EncodingFitler</filter-class> </filter> <filter-mapping> <filter-name>EncodingFitler</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
2) 編寫doFilter方法 /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 設(shè)置請求流編碼 request.setCharacterEncoding("UTF-8"); chain.doFilter(request, response); }
完成效果package com.hnxy.web;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;import javax.servlet.annotation.WebFilter;/** * Servlet Filter implementation class EncodingFitler */public class EncodingFitler implements Filter { /** * @see Filter#destroy() */ public void destroy() { // TODO Auto-generated method stub } /** * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // 設(shè)置請求流編碼 request.setCharacterEncoding("UTF-8"); chain.doFilter(request, response); } /** * @see Filter#init(FilterConfig) */ public void init(FilterConfig fConfig) throws ServletException { // TODO Auto-generated method stub }}
3) 測試<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><div> <form action="Test1Action" method="post"> <p> 請輸入名稱 : <input type="text" name="userName" /> </p> <p> <button type="submit">提交</button> </p> </form></div></body></html>
servlet :package com.hnxy.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * Servlet implementation class Test1Action */public class Test1Action extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println(request.getParameter("userName")); }}
我們可以看到,現(xiàn)在servlet沒有對數(shù)據(jù)做任何參數(shù)上的處理,如果沒有過濾器是這樣的:package com.hnxy.utils;import java.sql.SQLException;import com.alibaba.druid.pool.DruidDataSource;/** * 數(shù)據(jù)庫連接工具類 * @author My * */public class JdbcUtil { // 創(chuàng)建數(shù)據(jù)庫的連接對象 private static final String CONN_DRIVER = "com.mysql.jdbc.Driver"; private static final String CONN_URL = "jdbc:mysql://127.0.0.1:3306/userdb?characterEncoding=UTF-8"; private static final String CONN_USER = "root"; private static final String CONN_PASSWORD = "root"; // 創(chuàng)建數(shù)據(jù)源對象 private static DruidDataSource dataSource = new DruidDataSource(); // 賦值 static{ dataSource.setDriverClassName(CONN_DRIVER); dataSource.setUrl(CONN_URL); dataSource.setUsername(CONN_USER); dataSource.setPassword(CONN_PASSWORD); // 開啟SQL語句的統(tǒng)計功能 try { dataSource.addFilters("stat"); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 添加獲取數(shù)據(jù)源的方法 * @return */ public static DruidDataSource getDataSource() { return dataSource; }}
2) web.xml中加入druid的核心servlet和過濾器即可 <!-- Druid,監(jiān)控數(shù)據(jù)庫,以及WEB訪問連接信息 --> <filter> <filter-name>DruidWebStatFilter</filter-name> <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class> </filter> <filter-mapping> <filter-name>DruidWebStatFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置 Druid 監(jiān)控信息顯示頁面 --> <servlet> <servlet-name>DruidStatView</servlet-name> <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> <init-param> <!-- 允許清空統(tǒng)計數(shù)據(jù) --> <param-name>resetEnable</param-name> <param-value>true</param-value> </init-param> <init-param> <!-- 用戶名 --> <param-name>loginUsername</param-name> <param-value>admin</param-value> </init-param> <init-param> <!-- 密碼 --> <param-name>loginPassword</param-name> <param-value>admin123</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DruidStatView</servlet-name> <url-pattern>/druid/*</url-pattern> </servlet-mapping>
配置好之后正常開啟tomcat,正常訪問項目,你會發(fā)現(xiàn)加不加都沒有什么問題!你可以先玩一會 兒項目,然后在訪問下面的地址關(guān)鍵詞:基礎(chǔ),過濾,使用,簡單,入門,數(shù)據(jù),深入,動態(tài)
客戶&案例
微信公眾號
版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。