`
JavaSam
  • 浏览: 951810 次
  • 性别: 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工具类

    在Java编程领域,工具类(Utility Class)是包含各种实用函数的静态类,它们提供了一种简化编程任务的方式。以下是对标题和描述中提到的一些常用Java工具类的详细解释: 1. **数据库池工具类**:数据库连接池是管理...

    java文件上传下载工具类

    以下是对"java文件上传下载工具类"这一主题的详细解释。 首先,让我们了解文件上传。在Web应用中,用户可能需要上传文件,如图片、文档或视频。Java通过Servlet API提供了处理文件上传的功能。Servlet 3.0及以上...

    java开发Servlet使用jdbc工具类

    Java开发Servlet时,使用JDBC(Java Database Connectivity)工具类是一种常见的操作,它允许程序员与各种类型的数据库进行交互。在给定的描述中,我们提到的是一个自定义封装的JDBC工具类库,这个库提供了数据库...

    java servlet上传下载工具类

    总结,"java servlet上传下载工具类"是Java Web开发中一个实用的组件,它封装了复杂的文件操作逻辑,使开发者能更高效、安全地处理文件上传和下载任务。这个工具类基于"孤傲苍狼"的实现,具有较高的稳定性和灵活性,...

    servlet系统工具类

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

    java常用的util工具类

    Java的`util`工具类是Java Standard Library中的核心部分,包含了大量的实用类和接口,极大地提高了开发效率。这里我们将深入探讨几个在标题和描述中提到的`util`工具类及其在实际项目中的应用。 1. **MD5加密**: `...

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

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

    java实现部分工具类

    在Java编程领域,工具类是一组静态方法的集合,这些方法提供特定的功能,通常用于简化常见任务或提高代码的可重用性。本资源提供的"java实现部分工具类"涵盖了几个关键方面,包括前端Bootstrap样式的应用、页面布局...

    常用的30个java工具类

    在Java编程中,工具类(Util Classes)是程序员经常使用的代码集合,它们提供了一系列静态方法,简化了常见的任务。以下是对标题"常用的30个Java工具类"中提及的一些工具类及其功能的详细说明: 1. **MD5**: MD5...

    JAVA项目必用工具类

    "JAVA项目必用工具类"这个压缩包包含了多个实用的工具类,覆盖了分页、文件上传、验证码生成、处理乱码和跨域问题、DAO操作以及响应处理等常见需求。下面将详细介绍这些工具类及其相关知识点。 1. **...

    java下载类(servlet)

    在Java Web开发中,Servlet是一种用于扩展服务器功能的Java类,它可以处理来自客户端(通常是浏览器)的请求,并向客户端发送响应。在这个特定的场景中,"java下载类(servlet)"指的是一个使用Servlet技术来实现...

    java utils 工具类

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

    java_servlet_project

    一个典型的Java Servlet项目包括`WEB-INF`目录,其中包含`web.xml`、类文件(在`classes`目录下)和库文件(在`lib`目录下)。此外,还有静态资源如HTML、CSS和JavaScript文件。 10. **版本控制** 开发过程中,...

    java基础学习笔记 java整合技术 java工具类.zip

    再者,Java工具类通常指的是Java标准库中的各种实用类,如Arrays、Collections、Math、Date和Time等。这些工具类提供了大量的静态方法,帮助开发者执行常见任务,如排序、比较、计算等。Java 8引入了Lambda表达式和...

    Java后端常用工具类

    在Java后端开发中,工具类的使用是提高效率的关键,尤其对于Spring框架的应用更是如此。本主题聚焦于"Java后端常用工具类",涵盖了多个方面,包括依赖管理、日志记录、数据库配置、文件操作以及Spring框架的配置。 ...

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

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

    Java Servlet API 2.5

    总的来说,Java Servlet API 2.5是Java Web开发不可或缺的一部分,它为开发者提供了丰富的工具和接口,用于构建高效、灵活的Web应用程序。通过深入理解和熟练掌握这个API,开发者能够更好地应对各种Web开发挑战,...

    JavaServlet帮助文档

    JavaServlet帮助文档中的CHM文件是一个编译过的HTML帮助文档,它包含详细的API参考、教程、示例代码和常见问题解答,是开发者学习和查阅Servlet技术的重要资源。利用其内置的搜索功能,开发者可以快速找到所需的信息...

    java.servlet.jar

    这个"java.servlet.jar"文件包含了Servlet API的所有类和接口,开发者可以使用这些组件来构建动态Web应用程序。 Servlet是Java平台上的一个标准接口,由Java.sun.com(现在归Oracle所有)定义,它允许程序员创建...

    JAVA servlet 编程指南

    Java Servlet API提供了几个关键接口和类,如`Servlet`, `GenericServlet`, `HttpServlet`。`Servlet`是所有Servlet的基类,`GenericServlet`实现了Servlet接口并提供通用的多线程服务方法,而`HttpServlet`是`...

Global site tag (gtag.js) - Google Analytics