`
JavaSam
  • 浏览: 936044 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA 非常实用的servlet工具类

    博客分类:
  • JAVA
 
阅读更多
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.TreeMap;

import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Http与Servlet工具类.
*/
public abstract class ServletUtils {

//-- Content Type 定义 --//
public static final String EXCEL_TYPE = "application/vnd.ms-excel";
public static final String HTML_TYPE = "text/html";
public static final String JS_TYPE = "text/javascript";
public static final String JSON_TYPE = "application/json";
public static final String XML_TYPE = "text/xml";
public static final String TEXT_TYPE = "text/plain";

//-- Header 定义 --//
public static final String AUTHENTICATION_HEADER = "Authorization";

//-- 常用数值定义 --//
public static final long ONE_YEAR_SECONDS = 60 * 60 * 24 * 365;

/**
* 设置客户端缓存过期时间 的Header.
*/
public static void setExpiresHeader(HttpServletResponse response, long expiresSeconds) {
//Http 1.0 header
response.setDateHeader("Expires", System.currentTimeMillis() + expiresSeconds * 1000);
//Http 1.1 header
response.setHeader("Cache-Control", "private, max-age=" + expiresSeconds);
}

/**
* 设置禁止客户端缓存的Header.
*/
public static void setDisableCacheHeader(HttpServletResponse response) {
//Http 1.0 header
response.setDateHeader("Expires", 1L);
response.addHeader("Pragma", "no-cache");
//Http 1.1 header
response.setHeader("Cache-Control", "no-cache, no-store, max-age=0");
}

/**
* 设置LastModified Header.
*/
public static void setLastModifiedHeader(HttpServletResponse response, long lastModifiedDate) {
response.setDateHeader("Last-Modified", lastModifiedDate);
}

/**
* 设置Etag Header.
*/
public static void setEtag(HttpServletResponse response, String etag) {
response.setHeader("ETag", etag);
}

/**
* 根据浏览器If-Modified-Since Header, 计算文件是否已被修改.
*
* 如果无修改, checkIfModify返回false ,设置304 not modify status.
*
* @param lastModified 内容的最后修改时间.
*/
public static boolean checkIfModifiedSince(HttpServletRequest request, HttpServletResponse response,
long lastModified) {
long ifModifiedSince = request.getDateHeader("If-Modified-Since");
if ((ifModifiedSince != -1) && (lastModified < ifModifiedSince + 1000)) {
response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
return false;
}
return true;
}

/**
* 根据浏览器 If-None-Match Header, 计算Etag是否已无效.
*
* 如果Etag有效, checkIfNoneMatch返回false, 设置304 not modify status.
*
* @param etag 内容的ETag.
*/
public static boolean checkIfNoneMatchEtag(HttpServletRequest request, HttpServletResponse response, String etag) {
String headerValue = request.getHeader("If-None-Match");
if (headerValue != null) {
boolean conditionSatisfied = false;
if (!"*".equals(headerValue)) {
StringTokenizer commaTokenizer = new StringTokenizer(headerValue, ",");

while (!conditionSatisfied && commaTokenizer.hasMoreTokens()) {
String currentToken = commaTokenizer.nextToken();
if (currentToken.trim().equals(etag)) {
conditionSatisfied = true;
}
}
} else {
conditionSatisfied = true;
}

if (conditionSatisfied) {
response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
response.setHeader("ETag", etag);
return false;
}
}
return true;
}

/**
* 设置让浏览器弹出下载对话框的Header.
*
* @param fileName 下载后的文件名.
*/
public static void setFileDownloadHeader(HttpServletResponse response, String fileName) {
try {
//中文文件名支持
String encodedfileName = new String(fileName.getBytes(), "ISO8859-1");
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodedfileName + "\"");
} catch (UnsupportedEncodingException e) {
}
}

/**
* 取得带相同前缀的Request Parameters.
* 返回的结果的Parameter名已去除前缀.
*/
public static Map<String, Object> getParametersStartingWith(ServletRequest request, String prefix) {
AssertUtils.notNull(request, "Request must not be null");
Enumeration paramNames = request.getParameterNames();
Map<String, Object> params = new TreeMap<String, Object>();
if (prefix == null) {
prefix = "";
}
while (paramNames != null && paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
if ("".equals(prefix) || paramName.startsWith(prefix)) {
String unprefixed = paramName.substring(prefix.length());
String[] values = request.getParameterValues(paramName);
if (values == null || values.length == 0) {
// Do nothing, no values found at all.
} else if (values.length > 1) {
params.put(unprefixed, values);
} else {
params.put(unprefixed, values[0]);
}
}
}
return params;
}

/**
* 对Http Basic验证的 Header进行编码.
*/
public static String encodeHttpBasic(String userName, String password) {
String encode = userName + ":" + password;
return "Basic " + EncodeUtils.base64Encode(encode.getBytes());
}
} 
 
分享到:
评论

相关推荐

    java MD5加密工具类

    java md5加密示例,包括页面,servlet和加密工具类

    servlet系统工具类

    韩顺平.2011最新j2ee视频教程.细说servlet用户管理系统工具类

    我积攒的java工具类 基本满足开发需要的工具类

    D:\002 我的工具类\001 流\文件操作整体\FileEncodingUtil.java D:\002 我的工具类\001 流\文件操作整体\FileReadImpl.java D:\002 我的工具类\001 流\文件操作整体\FileTypeImpl.java D:\002 我的工具类\001 流\...

    java servlet上传下载工具类

    基于孤傲苍狼 的上传下载 封装的工具类

    java utils 工具类

    java 工具类,包含上传下载工具类,数据库工具类,验证码工具类,分页工具类,字符编码过滤工具类,字符串工具类 提醒:我已打包,在/WEB-INF/lib/itbofeng-utils.jar中,可以看到源码。 测试下载文件时修改servlet...

    java开发Servlet使用jdbc工具类

    自己封装的绝对好用的jdbc工具类库,包含数据库连接及增删改查功能,并且可以自己在dao层中编写相应sql语句。

    实验5 JAVA常用类.doc

    本专栏主要为Java程序设计(基础)实验报告和Java程序设计(进阶)实验报告,基础篇有JAVA环境搭建、Java语言基础、方法和数组、面向对象基础、Java常用类、继承与接口、成员访问控制与异常、JavaFX程序设计、Java...

    个人总结常用经典Utils工具类

    1、Utils工具类有String工具类、XmlNode节点工具类、BeanFactory相关、Common工具类、Cookie工具类、Date工具类、Http工具类、JDBC工具类、日志Log工具类、Servlet相关等。2、工具类省了重复造轮子的工作,可以直接...

    java下载类(servlet)

    NULL 博文链接:https://j2ee2009.iteye.com/blog/665063

    韩顺平sqlhelper工具类

    韩顺平sqlhelper工具类,一直贯穿于java jsp servlet javaweb中

    java中返回layui数据表格的json格式的数据工具类

    这是layui数据表格返回的json格式的封装代码,其中有参数说明。使用于javaweb开发 ,返回的json为layui官方的json格式。

    java-servlet-api.doc

    一个Javaservlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。 所有的...

    JAVA的servlet的分页类

    这是一个下载就可以直接用的分页工具类;大家都收藏吧;以后用的到的

    验证码工具类

    kaptcha是google开源的一个非常实用的验证码生成工具类,可以利用kaptcha生成各种各样的验证码,但是它没有上传到maven中央仓库。kaptcha的工作原理是调用com.google.code.kaptcha.servlet.KaptchaServlet生成一个...

    Servlet 中文乱码解决工具类

    在Java Web程序开发中,由于Web容器内部使用编码格式并不支持中文字符集,所以,处理浏览器请求中的中文数据就会出现乱码的现象。由于Web容器使用了ISO-8859-1的编码格式,所以在Web应用的业务处理中也会使用ISO-...

    基于java+servlet+mysql-图书商城

    项目名称:基于java+servlet+mysql-图书商城 项目架构:B/S架构 开发语言:Java语言 前端技术:HTML、CSS、JS、JQuery等技术 后端技术:JSP、Servlet、JDBC等技术 运行环境:Win10、JDK1.8 数 据 库:MySQL5.7...

    Java项目:小说阅读管理系统(java+JSP+bootstrap+Servlet+Mysql)

    1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1...

    java课程设计基于原生servlet和jdbc的学生信息管理系统.zip

    验证码工具类可以返回验证码图片和验证码内容,数据库连接工具类可以返回一个数据库连接和关闭数据库连接的方法,还有一个工具类借助gson将request的数据转换为json串; Dao层都是单表的CURD,没有复杂的业务所以也...

    验证码工具类.zip

    web开发验证码工具类 servlet版和struts2(Action)版两个文件夹,资源包含验证码源码.java文件,.jar包,和使用说明,以及代码样例

    本人收集的Java 工具类

    在开发过程上收集的工具类,有些是个人写的,有的是别人共享的,所以我也把这些共享出来给大家了!有30多个哦!需要的类库有jakarta-oro.jar,commons-io.jar,,servlet-api.jar,jsontools-core-1.6.jar,json-lib...

Global site tag (gtag.js) - Google Analytics