SpringMVC拦截器Filter完整功能实例

建立一个完整功能的Filter:

 package com.tom.web.filter;
 
 import com.tom.util.BaseUtil;
 import com.tom.util.CacheHelper;
 import com.tom.util.Constants;
 import java.io.IOException;
 import java.io.PrintWriter;
 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.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
 public class TomFilter
   implements Filter
 {
   private String[] permitUrls = null;
   
   public void init(FilterConfig config) throws ServletException
   {
     String permitUrls = config.getInitParameter("permitUrls");
     if (BaseUtil.isNotEmpty(permitUrls)) {
       this.permitUrls = permitUrls.split(";");
     }
   }
   
   public void doFilter(ServletRequest request, ServletResponse response, 
       FilterChain chain)
     throws IOException, ServletException
   {
     HttpServletRequest req = (HttpServletRequest)request;
     HttpServletResponse res = (HttpServletResponse)response;
     HttpSession session = req.getSession();
     req.setAttribute("tm_base", Constants.getSiteBaseUrl(req));
     
     boolean isPermit = isPermitUrl(req);
     String uid = String.valueOf(session.getAttribute(
         Constants.SESSION_USERID));
     String sessionid = String.valueOf(session.getAttribute(
         Constants.SESSION_SESSID));
     
 
     if (BaseUtil.isEmpty(uid)) {
       if (isPermit) {
         chain.doFilter(req, res);
       } else {
         toLoginPage(req, res);
       }      
     }
     else
     {
       int checkcode = checkLoginStatus(uid, sessionid);
       
       if (checkcode == 1) {
         chain.doFilter(req, res);
       } else {
         if (checkcode == 0)
         { 
           session.setAttribute(Constants.SESSION_USERID, null);
           session.setAttribute(Constants.SESSION_USERNAME, null);
           session.setAttribute(Constants.SESSION_USERTYPE, null);
           session.setAttribute(Constants.SESSION_USERGID, null);
           session.setAttribute(Constants.SESSION_SESSID, null);
           
           toLoginPage(req, res);
           return;
         }        
         session.setAttribute(Constants.SESSION_USERID, null);
         session.setAttribute(Constants.SESSION_USERNAME, null);
         session.setAttribute(Constants.SESSION_USERTYPE, null);
         session.setAttribute(Constants.SESSION_USERGID, null);
         session.setAttribute(Constants.SESSION_SESSID, null);
         
         toStatusExpiredPage(req, res);
         return;
       }
     }
   }
   
   public void destroy()
   {
     permitUrls = null;
   } 
   private int checkLoginStatus(String uid, String sessionid)
   {
     String cache_sessionid = (String)CacheHelper.getCache(
         "SessionCache", "U" + uid);
      
     if (BaseUtil.isEmpty(cache_sessionid)) {
       return 0;
     }
      
     if (cache_sessionid.equals(sessionid)) {
       return 1;
     }
     
       return -1;
   }
   
   private void toStatusExpiredPage(HttpServletRequest request,
       HttpServletResponse response)
   {
     String path = request.getContextPath();
     String html = "<script>top.location.href='" + path + 
         "/common/expired.thtml';</script>";
     PrintWriter out = null;
     response.setContentType("text/html");
     response.setCharacterEncoding("UTF-8");
     try {
       out = response.getWriter();
       request.setCharacterEncoding("UTF-8");
     } catch (Exception e) {
       e.printStackTrace();
     }
     out.println(html);
     out.flush();
     out.close();
   }
   
   private void toLoginPage(HttpServletRequest request, HttpServletResponse
       response)
   {
     String path = request.getContextPath();
     String html = "<script>top.location.href='" + path + 
         "/login.thtml';</script>";
     PrintWriter out = null;
     response.setContentType("text/html");
     response.setCharacterEncoding("UTF-8");
     try {
       out = response.getWriter();
       request.setCharacterEncoding("UTF-8");
     } catch (Exception e) {
       e.printStackTrace();
     }
     out.println(html);
     out.flush();
     out.close();
   }
   
   private boolean isPermitUrl(HttpServletRequest request) {
     boolean isPermit = false;
     String currentUrl = getCurrentURI(request);
     if ((permitUrls != null) && (permitUrls.length > 0)) { 
         String[] arrayOfString;
       int j = (arrayOfString = permitUrls).length; 
       for (int i = 0; i < j; i++) 
       { String url = arrayOfString[i];
         if (url.equals(currentUrl)) {
           isPermit = true;
           break;
         }
       }
     }
     return isPermit;
   }
   
   private String getCurrentURI(HttpServletRequest request) {
     String path = request.getContextPath();
     String uri = request.getRequestURI();
     uri = uri.substring(path.length());
     return uri;
   }
 }
/* 
 * Qualified Name:     com.tom.web.filter.TomFilter
 * Java Class Version: 6 (50.0)
 * JD-Core Version:    0.7.1
 */

配置web.xml:

	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<filter>
		<filter-name>TomFilter</filter-name>
		<filter-class>com.tom.web.filter.TomFilter</filter-class>
		<init-param>
			<param-name>permitUrls</param-name>
			<param-value>/login.thtml;/common/login.do;/common/logout.do;/inc/checkcode.jsp;
			/common/expired.thtml;/register.thtml;/common/register.do</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>TomFilter</filter-name>
		<url-pattern>*.thtml</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>TomFilter</filter-name>
		<url-pattern>*.do</url-pattern>
	</filter-mapping>

注意区分

javax.servlet.Filter;

org.springframework.web.filter.*;

落叶

IMG_20171117_133620.jpg

The fallen leaves belongs to tree root. size:1373 x 1831,272.62 KB

解决WordPress无法用https加载头像的插件

由于国内防火墙的问题,Gravatar 头像不仅无法稳定访问,还影响wordpress博客打开速度,直接影响用户体验。解决的方法可以使用Gravatar 头像服务的(HTTPS)加密线路,使用https加密线路可以直接安装插件WP Gravatar Https。

插件使用方法:

方法一:在后台的插件选项卡下点击“安装插件”,搜索WP Gravatar Https,然后点击现在安装,安装成功后启用即可。

方法二:或者进入WP Gravatar Https插件下载页面,下载WP Gravatar Https插件压缩包,把解压后的文件夹上传到wp-content/plugins/目录,然后登陆网站后台——插件——已安装插件中启用该插件即可。


JS热键键值及应用

字母和数字键的键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码
A 65 J 74 S 83 1 49
B 66 K 75 T 84 2 50
C 67 L 76 U 85 3 51
D 68 M 77 V 86 4 52
E 69 N 78 W 87 5 53
F 70 O 79 X 88 6 54
G 71 P 80 Y 89 7 55
H 72 Q 81 Z 90 8 56
I 73 R 82 0 48 9 57

数字键盘上的键的键码值(keyCode) 功能键键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码
0 96 8 104 F1 112 F7 118
1 97 9 105 F2 113 F8 119
2 98 * 106 F3 114 F9 120
3 99 + 107 F4 115 F10 121
4 100 Enter 108 F5 116 F11 122
5 101 109 F6 117 F12 123
6 102 . 110
7 103 / 111

控制键键码值(keyCode)
按键 键码 按键 键码 按键 键码 按键 键码
BackSpace 8 Esc 27 Right Arrow 39 -_ 189
Tab 9 Spacebar 32 Down Arrow 40 .> 190
Clear 12 Page Up 33 Insert 45 /? 191
Enter 13 Page Down 34 Delete 46 `~ 192
Shift 16 End 35 Num Lock 144 [{ 219
Control 17 Home 36 ;: 186 /| 220
Alt 18 Left Arrow 37 =+ 187 ]} 221
Cape Lock 20 Up A

应用:屏蔽按键或按键组合

function Key Down(){    
  if ((window.event.altKey)&& 
      ((window.event.keyCode==37)||   //屏蔽 Alt+ 方向键 ← 
       (window.event.keyCode==39))){  //屏蔽 Alt+ 方向键 → 
     alert("不准你使用ALT+方向键前进或后退网页!"); 
     event.returnValue=false; 
     } 
  if ((event.keyCode==8)||            //屏蔽退格删除键 
      (event.keyCode==116)){          //屏蔽 F5 刷新键 
     event.keyCode=0; 
     event.returnValue=false; 
     } 
  if ((event.ctrlKey)&&(event.keyCode==78)){   //屏蔽 Ctrl+n 
     event.returnValue=false; 
     } 
  if ((event.shiftKey)&&(event.keyCode==121)){ //屏蔽 shift+F10 
     event.returnValue=false; 
     } 
  if (event.keyCode==122){ //屏蔽 F11 
     event.returnValue=false; 
     } 
  }function Key Down(){    
  if ((window.event.altKey)&& 
      ((window.event.keyCode==37)||   //屏蔽 Alt+ 方向键 ← 
       (window.event.keyCode==39))){  //屏蔽 Alt+ 方向键 → 
     alert("不准你使用ALT+方向键前进或后退网页!"); 
     event.returnValue=false; 
     } 
  if ((event.keyCode==8)||            //屏蔽退格删除键 
      (event.keyCode==116)){          //屏蔽 F5 刷新键 
     event.keyCode=0; 
     event.returnValue=false; 
     } 
  if ((event.ctrlKey)&&(event.keyCode==78)){   //屏蔽 Ctrl+n 
     event.returnValue=false; 
     } 
  if ((event.shiftKey)&&(event.keyCode==121)){ //屏蔽 shift+F10 
     event.returnValue=false; 
     } 
  if (event.keyCode==122){ //屏蔽 F11 
     event.returnValue=false; 
     } 
  }

Java反编译器JD-GUI

JD-GUI 是一个用 C++ 开发的 Java 反编译工具,由 Pavel Kouznetsov开发,支持Windows、Linux和苹果Mac Os三个平台。而且提供了Eclipse平台下的插件JD-Eclipse。JD-GUI不需要安装,直接点击运行,可以反编译jar,class文件。

1510736185.png

下载地址:http://jd.benow.ca