⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 htmlfilter.java

📁 以静态化的地址来访问动态页面 我曾经上传个一个用servlet实现的,用servlet实现的不好和struts整合 所以我有开发另外一个用过滤器Filter实现的小框架以便于和struts整合
💻 JAVA
字号:
/**
 * 
 */
package com.xiaoran.ctrl;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @author jkll
 * config in web.xml like bellow:
 * <filter>
        <filter-name>htmtfilter</filter-name>
        <filter-class>com.bafang.xiaoran.ctrl.HtmlFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>htmtfilter</filter-name>
        <url-pattern>*.html</url-pattern>
    </filter-mapping>
 *
 */
public class HtmlFilter implements Filter {

	
    private FilterConfig filterConfig;
    
    /**
     * Provide a workaround for some versions of WebLogic.
     * <p/>
     * Servlet 2.3 specifies that the servlet context can be retrieved from the session. Unfortunately, some versions of
     * WebLogic can only retrieve the servlet context from the filter config. Hence, this method enables subclasses to
     * retrieve the servlet context from other sources.
     *
     * @return the servlet context.
     */
    protected ServletContext getServletContext() {
        return filterConfig.getServletContext();
    }
    
    /**
     * Expose the FilterConfig instance.
     *
     * @return Our FilterConfit instance
     */
    protected FilterConfig getFilterConfig() {
        return filterConfig;
    }
    
	/**
	 * 
	 */
	public HtmlFilter() {
		// TODO Auto-generated constructor stub
	}

	/* (non-Javadoc)
	 * @see javax.servlet.Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub

	}

	/* (non-Javadoc)
	 * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
	 */
	public void doFilter(ServletRequest req, ServletResponse res,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		HttpServletRequest request = (HttpServletRequest)req;
		HttpServletResponse response=(HttpServletResponse)res;
		response.setContentType("text/html; charset=utf-8");
		ServletContext SC = getServletContext();
		RequestDispatcher RD = null;
		
		//初始化
		initialize(request);
		if(getNoParam()){
			//noParameter
		}else{
			//转换参数模式
			convert();
		}
		//合成目标跳转路径
		synthesis();
		//System.out.println("True page:"+getUltimateJumpAddress());
		RD = SC.getRequestDispatcher(getUltimateJumpAddress());
		//数据归零
		setHtmlStr("");
		setQueryString("");
		setDispatcherpage("");
		setUltimateJumpAddress("");
		setNoParam(false);
		RD.forward(request, response);
		//chain.doFilter(request, response);
	}

	/* (non-Javadoc)
	 * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
	 */
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		this.filterConfig = filterConfig;

	}
	
	/**
	 * 目标字符串
	 */
	private String htmlStr = "";

	/**
	 * 目标跳转页面
	 */
	private String dispatcherpage = "";

	/**
	 * 参数
	 */
	private String queryString = "";
	
	/**
	 * 最总跳转地址
	 * */
	private String ultimateJumpAddress = "";
	
	/**
	 * 没有参数
	 * */
	private boolean noParam = false;
	
	/**
	 * 拓展名
	 * */
	private String extension = "";


	/**
	 * @return Returns the extension.
	 */
	private String getExtension() {
		return extension;
	}


	/**
	 * @param extension The extension to set.
	 */
	private void setExtension(String extension) {
		this.extension = extension;
	}
	
	/**
	 * @return Returns the noParam.
	 */
	private boolean getNoParam() {
		return noParam;
	}

	/**
	 * @param noParam The noParam to set.
	 */
	private void setNoParam(boolean noParam) {
		this.noParam = noParam;
	}


	/**
	 * @return Returns the dispatcherpage.
	 */
	protected String getDispatcherpage() {
		return dispatcherpage;
	}
	

	/**
	 * @return Returns the htmlStr.
	 */
	protected String getHtmlStr() {
		return htmlStr;
	}


	/**
	 * @return Returns the queryString.
	 */
	protected String getQueryString() {
		return queryString;
	}


	/**
	 * @return Returns the ultimateJumpAddress.
	 */
	protected String getUltimateJumpAddress() {
		return ultimateJumpAddress;
	}


	/**
	 * @param dispatcherpage The dispatcherpage to set.
	 */
	protected void setDispatcherpage(String dispatcherpage) {
		this.dispatcherpage = dispatcherpage;
	}


	/**
	 * @param htmlStr The htmlStr to set.
	 */
	protected void setHtmlStr(String htmlStr) {
		this.htmlStr = htmlStr;
	}


	/**
	 * @param queryString The queryString to set.
	 */
	protected void setQueryString(String queryString) {
		this.queryString = queryString;
	}


	/**
	 * @param ultimateJumpAddress The ultimateJumpAddress to set.
	 */
	protected void setUltimateJumpAddress(String ultimateJumpAddress) {
		this.ultimateJumpAddress = ultimateJumpAddress;
	}
	

	/**
	 * 得到目标字符串
	 */
	private void initialize(HttpServletRequest request) {
		
		// 得到 最后一个 / 与 .html或.htm 之间的目标字符
		String $_s = request.getRequestURI();
		if($_s.lastIndexOf("-")<=0){
			setNoParam(true);
		}else{
			setNoParam(false);
		}
		//截取拓展名
		setExtension($_s.substring($_s.lastIndexOf(".")+1,$_s.length()));
		//System.out.println($_s);
		
		String $_$ = request.getContextPath();
		if("".equals($_$)){
			//
		}else{
			$_s = $_s.replace($_$,"");
		}
		setHtmlStr($_s.substring($_s.indexOf("/") + 1, $_s.lastIndexOf("."+getExtension())));
		//System.out.println(getHtmlStr());
		if(getNoParam()){
			setDispatcherpage(getHtmlStr()+".jsp");
			//System.out.println(getDispatcherpage());
		}else{
			setDispatcherpage(getHtmlStr().substring(0,getHtmlStr().indexOf("-"))+".jsp");
		}
	}
	/**
	 * 转换参数
	 * */
	private void convert(){
		int $ = 1;
		String s_back = "";
		while(getHtmlStr().indexOf("-")!=-1){
			s_back = getHtmlStr();
			int start  = getHtmlStr().indexOf("-")+1;
			setHtmlStr(getHtmlStr().substring(start,getHtmlStr().length()));
			s_back = getHtmlStr();
			int end    = getHtmlStr().indexOf("-");
			if(end==-1)
				end = getHtmlStr().length();
			//System.out.println("第"+$+"次截取后:"+getHtmlStr());
			if($>1)
				queryString += "&";
			queryString += "param"+$+"="+s_back.substring(0,end);
			//System.out.println(queryString);
			$++;
		}
	}
	
	private void synthesis(){
		if(getNoParam()){
			setUltimateJumpAddress("/"+getDispatcherpage());
		}else{
			setUltimateJumpAddress("/"+getDispatcherpage()+"?"+getQueryString());
		}
	}



}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -