com.j2mvc.framework.dispatcher.reader.FileReader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of j2mvc-framework-web Show documentation
Show all versions of j2mvc-framework-web Show documentation
强烈建议使用J2mvc 2.1以后的版本。
version 2.1.01
1.优化路径跳转,Servlet和Filter方式的路径设置
2.优化内存销毁
3.更换JSON依赖包
4.优化接收方法RequestMethod,封装不同ContentType格式提交
封装JSON,XML数据提交模块
JSON请求示例
{
"id":"JSON134851",
"title":"JSON提交的标题",
"price":65.1,
"stock":100
}
XML请求示例
<!DOCTYPE root [
<!ELEMENT root ANY>
<!ATTLIST Product SSN ID #REQUIRED>]>
<root>
<Product SSN='id'>XMLID12354</Product>
<Product SSN='title'>XML提交的标题 </Product>
<Product SSN='price'>55 </Product>
<Product SSN='stock'>32 </Product>
</root>
version 2.1.02
1.解决URL无后缀情况无法加载静态资源,解决无法渲染CSS文件。
version 2.1.03
1.移除com.j2mvc.StringUtils.getUtf8()方法调用
更改为getCharset()
version 2.1.04
1.去除Servlet和Filter的全局变量销毁,只交给Listener处理。
version 2.1.05,2.1.06,2.1.07
1.完善POST提交的JSON数据
支持接收基础数据类型、任意对象类型、任意数组类型。
不支持接收参数为集合类型或Map类型,但可以定义为接收对象类型的元素。
version 2.1.05,2.1.06,2.1.07
1.修改连接池变量
version 2.1.09
增加上传功能,修改RequestMethod,ContentType设置方式
version 2.1.10,2.1.11
更改上传文件名格式为UUID格式,移除JSON映射类,更改接收多文件上传。
version 2.1.12
删除文件列有的空对象
version 2.1.13
增加配置文件目录/conf,加载上传功能配置/conf/upload.properties
version 2.1.18
拦截器也能获取ActionBean
version 2.1.20
添加上传文件只读权限
version 2.1.21
支持同时接收文件和文本数据
version 2.1.22
增加文件接收类型media
version 2.1.23
删除upload类printJson方法
The newest version!
package com.j2mvc.framework.dispatcher.reader;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Time;
import java.text.ParseException;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import com.j2mvc.framework.Constants;
import com.j2mvc.framework.action.ActionUpload;
import com.j2mvc.framework.action.RequestUri;
import com.j2mvc.framework.action.UploadBean;
import com.j2mvc.framework.upload.Upload;
import com.j2mvc.framework.util.FieldUtil;
import com.j2mvc.framework.util.InvokeUtils;
import com.j2mvc.util.StringUtils;
public class FileReader extends BaseReader {
private ActionUpload actionUpload;
private HttpServletResponse response;
private UploadBean uploadBean;
static final Logger log = Logger.getLogger(DefaultReader.class);
public FileReader(HttpServletRequest request, Method method, Object object,
HttpServletResponse response,
ActionUpload actionUpload) {
super(request, method, object);
this.response = response;
this.actionUpload = actionUpload;
// 接收上传
upload();
}
@Override
public synchronized Object result() {
clazz = object.getClass();
types = method.getParameterTypes();
int length = types.length;
if(length>0){
// 请求参数名数组
names = getParameterNames(clazz,method.getName(), length);
values = new Object[types.length];
if(names!=null){
for (int i = 0; i < types.length; i++) {
Class> type = types[i];
values[i] = getParameterValue(type, names[i]);
}
try {
return method.invoke(object,values);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
// 没有参数,执行当前Action方法
return InvokeUtils.invoke(clazz, method.getName(), object, null);
}
private synchronized void upload() {
Upload upload = new Upload(request, response);
if(!StringUtils.isEmpty(actionUpload.getDirname()))
upload.setDirName(actionUpload.getDirname());
if(!StringUtils.isEmpty(actionUpload.getExts()))
upload.setExts(actionUpload.getExts());
if(!StringUtils.isEmpty(actionUpload.getSavePath()))
upload.setSavePath(actionUpload.getSavePath());
if(!StringUtils.isEmpty(actionUpload.getSaveUrl()))
upload.setSaveUrl(actionUpload.getSaveUrl());
if(actionUpload.getMaxSize() > 0)
upload.setMaxSize(actionUpload.getMaxSize());
upload.setKeepOriginName(actionUpload.isKeepOriginName());
upload.setInputStreamOnly(actionUpload.isInputStreamOnly());
try {
upload.execute();
uploadBean = new UploadBean();
uploadBean.setErrors(upload.getErrors());
uploadBean.setFileList(upload.getFileList());
uploadBean.setTextData(upload.getTextData());
} catch (Exception e) {
e.printStackTrace();
}
}
public UploadBean getUploadBean() {
return uploadBean;
}
/**
* 获取参数值
* @param type
* @param name
*
*/
protected Object getParameterValue(Class> type,String name){
if(RequestUri.class.isAssignableFrom(type) ){
String path = request.getContextPath();
String requestUri = request.getRequestURI();
requestUri = StringUtils.deleRepeat(requestUri, "/");
requestUri = requestUri.substring(path.length(),requestUri.length());
requestUri = requestUri.startsWith("/")?requestUri.substring(1,requestUri.length()):requestUri;
requestUri = requestUri.endsWith("/")?requestUri.substring(0,requestUri.length()-1):requestUri;
String[] values = requestUri.split("/");
return new RequestUri(values);
}else if(String.class.isAssignableFrom(type)
|| Integer.class.isAssignableFrom(type)
|| Short.class.isAssignableFrom(type)
|| short.class.isAssignableFrom(type)
|| int.class.isAssignableFrom(type)
|| Long.class.isAssignableFrom(type)
|| long.class.isAssignableFrom(type)
|| Float.class.isAssignableFrom(type)
|| float.class.isAssignableFrom(type)
|| Double.class.isAssignableFrom(type)
|| double.class.isAssignableFrom(type)
|| Boolean.class.isAssignableFrom(type)
|| boolean.class.isAssignableFrom(type)
|| Time.class.isAssignableFrom(type)
|| Date.class.isAssignableFrom(type)
|| byte[].class.isAssignableFrom(type)
|| String[].class.isAssignableFrom(type)){
// 基础类型获取值
return getValue(type, name);
}else {
try {
List fields = FieldUtil.getFields(null, type);
Object object = getObjectByPrimaryKey(fields, type);
if(object == null){
object = type.newInstance();
}
invoke(fields, object);
return object;
} catch (InstantiationException e) {
log.error(e.getMessage());
} catch (IllegalAccessException e) {
log.error(e.getMessage());
}
}
return null;
}
/**
* 获取值
* @param type
* @param name
*
*/
@Override
protected Object getValue(Class> type,String name){
Object value = null;
String str = request.getParameter(name);
str = getCharset(str);
if(String.class.isAssignableFrom(type)) {
value = str;
}else if(Integer.class.isAssignableFrom(type)
|| Short.class.isAssignableFrom(type)
|| short.class.isAssignableFrom(type)
|| int.class.isAssignableFrom(type)){
try{
value = Integer.valueOf(str);
}catch(Exception e){}
}else if(Long.class.isAssignableFrom(type)
|| long.class.isAssignableFrom(type)){
try{
value = Long.valueOf(str);
}catch(Exception e){}
}else if(Float.class.isAssignableFrom(type)
|| float.class.isAssignableFrom(type)){
try{
value = Float.valueOf(str);
}catch(Exception e){}
}
else if(Double.class.isAssignableFrom(type)
|| double.class.isAssignableFrom(type)){
try{
value = Double.valueOf(str);
}catch(Exception e){}
}else if(Boolean.class.isAssignableFrom(type)
|| boolean.class.isAssignableFrom(type)){
if(str!=null && str.equalsIgnoreCase("true")){
value = true;
}else if(str!=null && str.equalsIgnoreCase("false")){
value = false;
}
}else if(Time.class.isAssignableFrom(type))
try {
value = Constants.DEFAULT_TIME_FORMAT.parse(str);
} catch (ParseException e) {
log.error(e.getMessage());
}
else if(Date.class.isAssignableFrom(type)){
try {
value = Constants.DEFAULT_DATE_TIME_FORMAT.parse(str);
} catch (ParseException e) {
log.error(e.getMessage());
}
}else if(byte[].class.isAssignableFrom(type)){
value = str;
}else if(String[].class.isAssignableFrom(type)){
value = request.getParameterValues(name);
}
return value;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy