获取request参数的工具类
package cn.edu.hactcm.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;
import cn.edu.hactcm.domain.User;
import cn.edu.hactcm.exception.WebException;
public final class WebUtils {
private WebUtils(){}
public static <T> T request2Bean(HttpServletRequest request, Class<T> beanClazz) {
try {
T bean = beanClazz.newInstance();
// TODO 要注意的是修改的数据相当于一条新的,应该把修改信息重新建一个表。
// TODO 在修改表中建立一个字段,用于参照原始数据的ID,每次修改删除原来记录重新添加新数据
// 看一下是否需要id‘
if(request.getParameter("id")==null)
BeanUtils.setProperty(bean, "id", makeUUID());
Enumeration e = request.getParameterNames();
while(e.hasMoreElements()) {
String name = (String) e.nextElement();
String value = request.getParameter(name);
BeanUtils.setProperty(bean, name, value);
}
return bean;
} catch (Exception e) {
throw new WebException(e);
}
}
@Deprecated
public static <T> T request2Bean_forComment(HttpServletRequest request,
Class<T> beanClazz) {
try {
T bean = beanClazz.newInstance();
// TODO 要注意的是修改的数据相当于一条新的,应该把修改信息重新建一个表。
// TODO 在修改表中建立一个字段,用于参照原始数据的ID,每次修改删除原来记录重新添加新数据
// 看一下是否需要id‘
Enumeration e = request.getParameterNames();
while(e.hasMoreElements()) {
String name = (String) e.nextElement();
String value = request.getParameter(name);
BeanUtils.setProperty(bean, name, value);
}
return bean;
} catch (Exception e) {
throw new WebException(e);
}
}
//这里使用了BeanUtils工具。
public static void copyBean(Object orig, Object dest) {
try {
// ConvertUtils.register(new DateLocaleConverter(), Date.class);
BeanUtils.copyProperties(dest, orig);
BeanUtils.setProperty(dest, "id", makeUUID());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//获取UUID,作为各表的id的值
public static String makeUUID() {
return UUID.randomUUID().toString();
}
// 将消息转发给 message.jsp 全局消息页面
public static void forward(String message, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setAttribute("message", message);
request.getRequestDispatcher("/WEB-INF/hactcmmobleshop/message.jsp").forward(request, response);
}
public static <T>T uploadrequest2Bean(HttpServletRequest request, Class<T> beanClazz) {
try {
T bean = beanClazz.newInstance();
//处理文件上传
//创建工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建文件上传组件
ServletFileUpload upload = new ServletFileUpload(factory);
if (!upload.isMultipartContent(request))
throw new WebException("not a upload form");
String id = makeUUID(); //这是phone的id
//获得远程发布手机信息的电脑的ip
String releaseip = request.getRemoteAddr();
String releasetime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date());
String brandname = "";
//添加手机添加者
User user = (User) request.getSession().getAttribute("user");
//看一看是否需要id
if (request.getParameter("id") == null)
BeanUtils.setProperty(bean, "id", id);
if (request.getParameter("releaseip") == null)
BeanUtils.setProperty(bean, "releaseip", releaseip);
if (request.getParameter("releasetime") == null)
BeanUtils.setProperty(bean, "releasetime", releasetime);
if (request.getParameter("userid") == null)
BeanUtils.setProperty(bean, "userid", user.getId());
//相将brandname属性设置为空,最后通过查询数据库查出
BeanUtils.setProperty(bean, "brandname", brandname);
//解析
List<FileItem> fileItems = upload.parseRequest(request);
for (FileItem item : fileItems) {
if (item.isFormField()) {
//封装到bean
String name = item.getFieldName();
String value = item.getString("utf-8");
BeanUtils.setProperty(bean, name, value);
} else {
//文件上传组件
String name = item.getFieldName();
//获得文件名
String filename = item.getName();
filename = filename.substring(filename.lastIndexOf("\\")+1);
// TODO 要将上传图片打散存放在不同的目录中,同时存的也不应该仅仅是jpg格式的
// TODO 在这个系统中还有一个错误,那就是不登陆也可以实现所有的功能,也可以实现发布消息,这个待完成,得使用细粒度权限控制
//图片相对于web应用的路径
String webPath = "/uploadphonepic/" + id + ".jpg";
//获得绝对路径
String path = request.getSession().getServletContext().getRealPath(webPath);
System.out.println(path);
File file = new File(path);
file.getParentFile().mkdirs(); // 创建目录
file.createNewFile(); // 创建文件
// 上传
InputStream in = item.getInputStream();
OutputStream out = new FileOutputStream(file);
Streams.copy(in, out, true);
// 删除临时文件
item.delete();
// 将图片的路径封装到bean
BeanUtils.setProperty(bean, name, webPath);
}
}
return bean;
} catch (Exception e) {
throw new WebException(e);
}
}
}
获取request参数的工具类的更多相关文章
- PHP 命令行参数解析工具类
<?php/** * 命令行参数解析工具类 * @author guolinchao * @email luoyecb@163.com */class CommandLine{ // store ...
- liferay笑傲江湖-API之参数的工具类(ParamUtil)
public class ParamUtil { 036 037 public static boolean get( 038 HttpServletRequest request, String p ...
- JSON参数解析工具类
/// <summary> /// 解析JSON参数 /// </summary> public class JSONParser { JObject jObj = null; ...
- java获取客户端ip地址工具类
public class IpUtils { private static final String[] HEADERS = { "X-Forwarded-For", " ...
- 获取请求的ip工具类
package com.example.util; import javax.servlet.http.HttpServletRequest; /** * get remote msg * 获取访问的 ...
- 从session中获取当前用户的工具类
package cn.crmx.crm.util; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Ht ...
- 获取post请求数据工具类
package com.ccidit.features.otherFunctions.util; import java.io.BufferedReader; import java.io.IOExc ...
- beego: 获取request参数
beego提供了一套web开发的框架.但我们在开发过程中遇到了一些问题,现汇总如下. 测试1:测试只有keys数组的情况 func (this *TestController) Index() { k ...
- 使用JS获取request参数
1.document.write('<%=request.getAttribute("param")%>'); 2.window.navigator.userAgent ...
随机推荐
- Node.js 教程
简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端Ja ...
- Swift中关于任意类型的数组
在Objc中你是不可以把一个非对象类型放入数组的,你必须将其"封箱",然后再放入数组. 在Swift中你可将非对象类型轻松放入数组: let ary = [1,2,3] 你可以明确 ...
- Android监听屏幕解锁和判断屏幕状态
开发后台服务的时候经常需要对屏幕状态进行判断,如果是想要监听屏幕解锁事件,可以在配置里面注册action为 android.intent.action.USER_PRESENT的广播,则可以监听解锁事 ...
- 在Activity,Service,Window中监听Home键和返回键的一些思考,如何把事件传递出来的做法!
在Activity,Service,Window中监听Home键和返回键的一些思考,如何把事件传递出来的做法! 其实像按键的监听,我相信很多人都很熟练了,我肯定也不会说这些基础的东西,所以,前期,还是 ...
- 4.2、Android Studio压缩你的代码和资源
为了让你的APK文件尽可能的小,你需要在构建的时候开启压缩来移除无用的代码和资源. 代码压缩可在ProGuard中使用,可以检测和清除无用的类,变量,方法和属性,甚至包括你引用的库.ProGuard同 ...
- 【移动开发】plurals
不同的语言对数量的语法规定有不同的规则.在英语里面,例如,1是特例.我们会直接写1book,而针对一个以上的我们会在book后加复数形式.这种区别对单数和复数来说是很普遍的,但是其他的语言做了更好的区 ...
- 详解EBS接口开发之库存事务处理采购接收--补充
除了可以用 详解EBS接口开发之库存事务处理采购接收的方法还可以用一下方法,不同之处在于带有批次和序列控制的时候实现方式不同 The script will load records into ...
- GDAL使用插件方式编译HDF4、HDF5以及NetCDF的bug修改
GDAL库中提供了很方便的插件机制来扩展支持的数据格式,比如HDF4.HDF5.NetCDF.FileGDB.Postgre.Oralce等等.都可以通过插件的方式来使得GDAL支持相应的格式.最近将 ...
- Ubuntu15.10 安装OpenCV3.1
wget https://sourceforge.net/projects/opencvlibrary/files/opencv-unix/3.1.0/opencv-3.1.0.zip/downloa ...
- Cassandra使用pycassa批量导入数据
本周接手了一个Cassandra系统的维护工作,有一项是需要将应用方的数据导入我们维护的Cassandra集群,并且为应用方提供HTTP的方式访问服务.这是我第一次接触KV系统,原来只是走马观花似的看 ...