Dreamer 3.0.1

28 篇文章 3 订阅
11 篇文章 0 订阅

这几天又把自己的框架升级了下,

更新内容:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值