📄 htmlfilter.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 + -