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. 第一百六十二节,jQuery入门介绍

    jQuery入门 学习要点: 1.什么是  jQuery 2.学习 jQuery的条件 3.jQuery的版本 4.jQuery的功能和优势 5.其他 JavaScript库 6.是否兼容低版本  I ...

  2. ubuntu 用命令行设置chrome的proxy

    google-chrome-stable --proxy-server="IP proxy Server:port"

  3. windows 中 Eclipse 打开当前文件所在文件夹

    默认情况下使用eclipse打开当前文件所在文件夹很麻烦,需要右键点击 Package Explorer 中的节点选择属性,然后复制路径,再打开资源管理器,然后再把路径粘贴进去.而MyEclipse一 ...

  4. python中的self

    1.首先明确的是self只有在类的方法中才会有,独立的函数或方法是不必带有self的.self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数. self名称不是必须的,在python中se ...

  5. Understanding Tensorflow using Go

    原文: https://pgaleone.eu/tensorflow/go/2017/05/29/understanding-tensorflow-using-go/ Tensorflow is no ...

  6. mysql_注入语句

    查看mysql中所有的用户及权限(只有root权限才能看). mysql> select distinct concat(user,host) from mysql.user; ======== ...

  7. filezilla 读取目录失败

    用到FTP,本来一直用主动模式,可以最近老是读取目录失败,425 Can't open data connection 和 读取目录列表失败(搞了好久,一天) 问题解决 这个问题主要是由于使用Pass ...

  8. 创建view,保存GROUP_CONCAT数据

    create view user_account_view asSELECT u.userId UserId ,u.userCode UserCode,GROUP_CONCAT(ac.id) Acco ...

  9. php 图片验证码

    1.原理 数组中每个图片对应一个值->随机值->获取并保存到$_SESSION中,->获取随机值对应的图片,->通过__FILE__输出图片,->浏览器验证 2.代码 c ...

  10. Numba makes Python code fast

    Numba: A High Performance Python Compiler http://numba.pydata.org/ 一行代码让python的运行速度提高100倍,你信吗?-聚能聊-云 ...