这几天又把自己的框架升级了下,
更新内容:
2013-07-31
支持Action返回类型为void
可以直接在Action中进行输出文件,和图片之类的
输出验证码一例:
jfreechat Action配置:
<request page="jfreechat" class="com.pan.action.JFreeChat" method="print"/>
2013年8月1日 增加自定义的过滤器 可以用来拦截权限
首先需要配置一个过滤器,这样可以来做权限拦截
配置文件:
<filters>
<filter name="session" class="com.pan.action.TestClass"/>
</filters>
类:
package com.pan.action;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.dreamer.filter.FilterSupport;
public class TestClass implements FilterSupport{
public boolean doFilter(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
// TODO Auto-generated method stub
//request.getRequestDispatcher("memberImport.jsp").forward(request, response);
HttpServletRequest request2=(HttpServletRequest)request;
request2.getSession().setAttribute("info", "经过权限检查,你还没有进行登录!");
return true;
}
}
增加了一个接口,FilterSupport 来配置自定义的过滤器
返回true,表示让其他过滤器继续执行,false 终止执行
核心过滤器中的处理:
package org.dreamer.filter;
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 org.dreamer.bean.EncodeConfig;
import org.dreamer.bean.Filters;
import org.dreamer.code.XmlRead;
import org.dreamer.controller.RequestController;
import com.pan.action.TestClass;
/**
* 整个框架的入口
* Request Filter
* @author Pan
*
*/
public class RequestFilters implements Filter{
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//设置编码
request.setCharacterEncoding(EncodeConfig.ENCODE);
response.setCharacterEncoding(EncodeConfig.ENCODE);
Long beginTime=System.currentTimeMillis();
try {
XmlRead read=new XmlRead((HttpServletRequest)request);
Filters filters= read.readFilters();
Boolean result=true;
if(filters!=null){
Class cl=Class.forName(filters.getPath());
FilterSupport support= (FilterSupport)cl.newInstance();
result=support.doFilter(request, response);
}
if(result){
//请求控制器
RequestController controller=new RequestController(request, response, chain);
controller.doFilter();
}
} catch (Throwable e) {
//如果是调用responese.getOutputStream流出现了异常,一下方法将不会执行,tomcat服务器会造成冲突报错
HttpServletResponse response2=(HttpServletResponse)response;
PrintWriter pw=response2.getWriter();
e.printStackTrace(pw);
e.printStackTrace();
}
Long endTime=System.currentTimeMillis();
System.out.println("执行用时:"+(endTime-beginTime));
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
接口:
package org.dreamer.filter;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public interface FilterSupport {
public boolean doFilter(ServletRequest request, ServletResponse response) throws IOException, ServletException;
}
下一个版本,将重写XML解析部分,和优化配置,
实现请求零配置
和Struts2一样,例如请求连接是这样的:IndexAction!go.html
直接调用IndexAction中的go方法 这样更加灵活了!不需要在进行配置
源码下载地址:http://pan.baidu.com/share/link?shareid=3497201165&uk=470382596