Java web开发中经常用到的一些方法:

import java.io.BufferedReader;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.session.InvalidSessionException;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;import org.springframework.web.util.WebUtils; import com.alibaba.fastjson.JSON; /**
* Web层辅助类*/
public final class WebUtil {

private WebUtil() {
} private static Logger logger = LogManager.getLogger();
public static final String CURRENT_USER = "CURRENT_USER"; /**
* 获取指定Cookie的值
*
* @param cookies
* cookie集合
* @param cookieName
* cookie名字
* @param defaultValue
* 缺省值
* @return
*/
public static final String getCookieValue(HttpServletRequest request, String cookieName, String defaultValue) {
Cookie cookie = WebUtils.getCookie(request, cookieName);
if (cookie == null) {
return defaultValue;
}
return cookie.getValue();
} /** 保存当前用户 */
public static final void saveCurrentUser(Object user) {
setSession(CURRENT_USER, user);
} /** 保存当前用户 */
public static final void saveCurrentUser(HttpServletRequest request, Object user) {
setSession(request, CURRENT_USER, user);
} /** 获取当前用户 */
public static final Long getCurrentUser() {
Subject currentUser = SecurityUtils.getSubject();
if (null != currentUser) {
try {
Session session = currentUser.getSession();
if (null != session) {
return (Long) session.getAttribute(CURRENT_USER);
}
} catch (InvalidSessionException e) {
logger.error(e);
}
}
return null;
} /** 获取当前用户 */
public static final Object getCurrentUser(HttpServletRequest request) {
try {
HttpSession session = request.getSession();
if (null != session) {
return session.getAttribute(CURRENT_USER);
}
} catch (InvalidSessionException e) {
logger.error(e);
}
return null;
} /**
* 将一些数据放到ShiroSession中,以便于其它地方使用
*
* @see 比如Controller,使用时直接用HttpSession.getAttribute(key)就可以取到
*/
public static final void setSession(Object key, Object value) {
Subject currentUser = SecurityUtils.getSubject();
if (null != currentUser) {
Session session = currentUser.getSession();
if (null != session) {
session.setAttribute(key, value);
}
}
} /**
* 将一些数据放到ShiroSession中,以便于其它地方使用
*
* @see 比如Controller,使用时直接用HttpSession.getAttribute(key)就可以取到
*/
public static final void setSession(HttpServletRequest request, String key, Object value) {
HttpSession session = request.getSession();
if (null != session) {
session.setAttribute(key, value);
}
} /** 移除当前用户 */
public static final void removeCurrentUser(HttpServletRequest request) {
request.getSession().removeAttribute(CURRENT_USER);
} /**
* 获得国际化信息
*
* @param key
* 键
* @param request
* @return
*/
public static final String getApplicationResource(String key, HttpServletRequest request) {
ResourceBundle resourceBundle = ResourceBundle.getBundle("ApplicationResources", request.getLocale());
return resourceBundle.getString(key);
} /**
* 获得参数Map
*
* @param request
* @return
*/
public static final Map<String, Object> getParameterMap(HttpServletRequest request) {
return WebUtils.getParametersStartingWith(request, null);
} @SuppressWarnings("unchecked")
public static Map<String, Object> getParameter(HttpServletRequest request) {
String str, wholeStr = "";
try {
BufferedReader br = request.getReader();
while ((str = br.readLine()) != null) {
wholeStr += str;
}
if (StringUtils.isNotBlank(wholeStr)) {
return JSON.parseObject(wholeStr, Map.class);
}
} catch (Exception e) {
logger.error("", e);
}
return getParameterMap(request);
} public static <T> T getParameter(HttpServletRequest request, Class<T> cls) {
String str, wholeStr = "";
try {
BufferedReader br = request.getReader();
while ((str = br.readLine()) != null) {
wholeStr += str;
}
if (StringUtils.isNotBlank(wholeStr)) {
return JSON.parseObject(wholeStr, cls);
}
} catch (Exception e) {
logger.error("", e);
}
return Request2ModelUtil.covert(cls, request);
} @SuppressWarnings("unchecked")
public static <T> List<T> getParameters(HttpServletRequest request, Class<T> cls) {
String str, wholeStr = "";
try {
BufferedReader br = request.getReader();
while ((str = br.readLine()) != null) {
wholeStr += str;
}
if (StringUtils.isNotBlank(wholeStr)) {
return JSON.parseObject(wholeStr, List.class);
}
} catch (Exception e) {
logger.error("", e);
}
return Request2ListUtil.covert(cls, request);
} /** 获取客户端IP */
public static final String getHost(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip != null && ip.indexOf(",") > 0) {
// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
ip = ip.substring(0, ip.indexOf(","));
}
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");
}
if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {
InetAddress inet = null;
try {
inet = InetAddress.getLocalHost();
ip = inet.getHostAddress();
} catch (UnknownHostException e) {
logger.error(e);
}
}
return ip;
}
}

Web层辅助工具类的更多相关文章

  1. Java.控制层.响应工具类.

    Java.控制层.响应工具类. package cn.com.spdbccc.cds.index.web.base; public class ApiResponse { private int co ...

  2. 类型转换辅助工具类TypeCaseHelper

    package org.sakaiproject.util; import java.math.BigDecimal; import java.sql.Date; import java.sql.Ti ...

  3. spring -mvc service层调用工具类配置

    在service层时调用工具类时服务返回工具类对象为空 在此工具类上加上@Component注解就可以了 @Component:把普通pojo实例化到spring容器中,相当于配置文件中的 <b ...

  4. java在文本处理中的相关辅助工具类

    1,java分词 package com.bobo.util; import ICTCLAS.I3S.AC.ICTCLAS50; public class Cutwords { public stat ...

  5. JUC——线程同步辅助工具类(Semaphore,CountDownLatch,CyclicBarrier)

    锁的机制从整体的运行转态来讲核心就是:阻塞,解除阻塞,但是如果仅仅是这点功能,那么JUC并不能称为一个优秀的线程开发框架,然而是因为在juc里面提供了大量方便的同步工具辅助类. Semaphore信号 ...

  6. JUC——线程同步辅助工具类(Exchanger,CompletableFuture)

    Exchanger交换空间 如果现在有两个线程,一个线程负责生产数据,另外一个线程负责消费数据,那么这个两个线程之间一定会存在一个公共的区域,那么这个区域的实现在JUC包之中称为Exchanger. ...

  7. 好用的Cache辅助工具类

    话不多说,直接上代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  8. 制作ado开发辅助工具类SqlHelper

    public static class SqlHelper { //通过配置文件获取连接字符创 private static readonly string constr = Configuratio ...

  9. JAVA结合 JSON Web Token(JWT) 工具类

    引入java-jwt-3.3.0.jar .  jjwt-0.9.0.jar .jackson-all-1.7.6.jar 或者maven <!-- https://mvnrepository. ...

随机推荐

  1. 经典Mathematica函数大全

    转自:http://blog.renren.com/share/238323208/8426343822  Mathmatic 函数表  一.运算符及特殊符号 Line1; 执行Line,不显示结果  ...

  2. 第二百一十一节,jQuery EasyUI,ValidateBox(验证框)组件

    jQuery EasyUI,ValidateBox(验证框)组件 学习要点: 1.加载方式 2.属性列表 3.方法列表 4.自定义验证 本节课重点了解 EasyUI 中 ValidateBox(验证框 ...

  3. 请谈谈对SOA的认识。

    请谈谈对SOA的认识. 解答:面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接 ...

  4. 对Linux命令进一步学习vim(二)

    今天,进一步学习Linux相关的命令,可能会有重复的地方,但学习本来就是不断重复的过程.故作小记! 1.安装了:vim  ,,,一款Linux爱好者经常用到的ide sudo apt-get inst ...

  5. 《linux系统及其编程》实验课记录(一)

    实验 1:登录和使用基本的 Linux 命令 实验环境: 安装了 Red Hat Enterprise Linux 6.0 可运行系统,并且是成功验证系统. 有另外一个无特权用户 student,密码 ...

  6. Http服务器实现文件上传与下载(三)

    一.引言 在前2章的内容基本上已经讲解了整个的大致流程.在设计Http服务器时,我设计为四层的结构,最底层是网络传输层,就是socket编程.接着一层是请求和响应层,叫做Request和Respons ...

  7. Yolo+Windows 配置(详细版)

    一.配置环境  VS2013+显卡GtX1080ti+CUDA7.5+Opencv3.1.0+pthread pthread:ftp://sourceware.org/pub/pthreads-win ...

  8. less.js

    在引入你自己的less文件的时候 <link rel="stylesheet/less" href="styles/site.less"> 之后再引 ...

  9. Blue Bird

    Blue Bird 哈巴他一 他拉 毛套拉那 一套一太(他)卖咋西他 闹哇 啊哦一 啊哦一 啊闹扫啦 卡那西米哇马达 哦包爱 啦来字赛次那撒哇姨妈 次卡米哈几卖他阿娜塔爱套一大 靠闹看叫毛姨妈靠逃吧你 ...

  10. iOS 7 计算字符串高度

    - (float)width:(NSString *)str font:(UIFont *)font { NSDictionary *attribute = @{NSFontAttributeName ...