package com.sf.scms.core.aop;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
public class IPUtil {
public static String getIpAddress(HttpServletRequest request) {
try {
if (request == null) {
return "";
}
String ip = request.getHeader("x-forwarded-for");
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.getRemoteAddr();
}
final String[] arr = ip.split(",");
for (final String str : arr) {
if (!"unknown".equalsIgnoreCase(str)) {
ip = str;
break;
}
}
if (ip.equals("0:0:0:0:0:0:0:1")) {
ip = "127.0.0.1";
}
return ip;
} catch (Exception e) {
return "";
}
}
}
package com.sf.scms.core.aop;
import java.util.UUID ;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Date;
import com.sf.novatar.scms.common.util.DateUtil;
public final class StringUtil {
public static String subString(String str, int end) {
String result = str;
if(null != str && str.length() > end){
result = str.substring(0, end);
}
return result;
}
public static String outString(Object[] args){
String out = "";
if(args.length <=0){
out = "null";
}else{
for(int i=0; i<args.length; i++){
out = out+"<>"+args[i];
}
}
return out;
}
public static String getErrorInfoFromException(Exception e) {
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
return "\r\n" + DateUtil.toDateTimeString(new Date()) + " : " + sw.toString() + "\r\n";
} catch (Exception e2) {
return "bad getErrorInfoFromException";
}
}
/**
* 删除后面指定的字符
*
* @param toTrim
* @param trimStr
* @return
*/
public static String trimSufffix(String toTrim, String trimStr) {
while (toTrim.endsWith(trimStr)) {
toTrim = toTrim.substring(0, toTrim.length() - trimStr.length());
}
return toTrim;
}
public static void main(String[] args) {
String a = null;
Object obj = null;
obj.equals("123");
}
}
分享到:
相关推荐
- `applicationContext.xml`:这是Spring框架的核心配置文件,用于定义bean的创建、依赖注入、AOP(面向切面编程)、事务管理等。在这里,你可以看到bean的定义,如数据源、SessionFactory、DAO、Service等组件的...
1. **Spring框架**:Spring是一个全面的企业级应用开发框架,它提供依赖注入(DI)和面向切面编程(AOP)等功能,有助于简化Java应用程序的开发。在本学习辅助系统中,Spring主要负责管理各个组件的生命周期和依赖...
让我们逐一解析每个标签和子文件名所代表的Java技术领域: 1. **AOP(面向切面编程)**:这是一个编程范式,允许程序员定义“切面”,这些切面是代码中的关注点,如日志、事务管理等。在Spring框架中,AOP常用来...
`aop`目录可能包含了更多的支付宝SDK相关文件,例如配置文件、样例代码或者其他辅助工具。这些文件可能会包含具体的API调用示例,帮助开发者快速上手。在实际开发中,开发者需要根据自己的应用需求,配置这个目录下...
这是一个基于Java后端SSM(Spring、SpringMVC、MyBatis)框架,结合前端Vue.js和Bootstrap构建的课程辅助教学网站项目。SSM是Java领域常用的开发框架组合,Spring提供依赖注入和全面的企业级应用支持,SpringMVC处理...
8. `@Args`、`@Within`、`@Target`、`@annotation`等:这些是用于构建切点表达式的辅助注解,可以根据参数类型、所在包、注解等条件进行匹配。 结合标签“源码”,我们可以通过查看Spring AOP的源代码来理解这些...
标题“spring2.5配置VM”指的是在Spring框架2.5版本中,如何配置...同时,`FormBeanUtil.java`文件可能是一个辅助工具,用于处理Spring MVC中的表单数据。对于深入学习和理解Spring框架,掌握这些知识点是至关重要的。
7. `dom4j.jar` 或 `jaxen.jar`:XML处理库,MyBatis使用它们解析配置文件,如Mapper XML文件。 在实际开发中,开发者通常会创建一个Spring配置文件,配置数据源、事务管理器、MyBatis的SqlSessionFactory以及...
3. lotusphp_runtime:这部分可能是运行时环境或特定框架的辅助文件,例如在LotusPHP框架下运行SDK时所需的一些配置或工具类。 4. .idea:这是一个IDE的项目配置文件,通常包含有开发环境的设置信息,对于实际的...
在IT行业中,WebHelper是一个常见的概念,它通常指的是一个辅助类或者库,用于简化Web开发中的常见任务。这个“webhelper heilper”压缩包很可能包含了一组实用的代码片段或函数,帮助开发者快速实现一些功能,从而...
【标签】中的“源码”提示我们,这篇博客可能深入到MyBatis的内部实现,如Executor的执行流程,ParameterHandler、ResultSetHandler和StatementHandler三大处理类的作用,以及MyBatis如何解析XML配置文件等。...
映射文件定义了SQL语句及其参数绑定。接着,我们将这些配置整合到Spring的配置文件中,使用SqlSessionFactoryBean来加载MyBatis配置,并通过Spring的MapperScannerConfigurer扫描包内所有的Mapper接口,自动注册为...
10. **资源文件解析**:`res`目录可能包含相关的数据库脚本、日志文件、配置文件等,这些都是学习Mybatis时不可或缺的辅助材料。 总之,这个压缩包为初学者提供了一个全面了解和学习Mybatis的起点,从基础概念到...
7. 其他辅助库:如`commons-lang3.jar`, `commons-logging.jar`, `aopalliance.jar`等,它们提供了一些通用的功能和工具类。 整合SSM框架的过程主要包括以下几个步骤: 1. 引入依赖:在`pom.xml`或`build.gradle`...
在创建`ApplicationContext`实例时,通常会调用带有`configLocations`参数的构造函数,这个参数指定了Spring XML配置文件的位置。例如,`"applicationContext.xml"`就是一个常见的配置文件名。 进入`refresh()`方法...
2. 配置Spring MVC:创建Spring MVC的配置文件,如`servlet-context.xml`,配置DispatcherServlet、视图解析器、模型-视图映射等。 3. 配置MyBatis:创建MyBatis的全局配置文件`mybatis-config.xml`,以及XML映射...
- 其他依赖包:可能还需要Spring的核心库(如spring-context.jar)和其他辅助库,如AspectJ用于AOP支持,log4j或SLF4J用于日志记录。 - 搭建步骤: - 创建项目:在Eclipse中新建Dynamic Web Project,并设置相应...
- 在pom.xml文件中添加SSM及相关的依赖,包括Spring、SpringMVC、MyBatis的版本,以及其他辅助库如Log4j和SLF4J等。 6. **项目结构** - 一个典型的SSM项目目录结构包括src/main/java(存放源代码)、src/main/...
6. **dom4j** 和 **xml-apis**: 用于XML解析和处理,是Hibernate配置文件和映射文件解析所必需的。 7. **javassist**: Hibernate使用这个库动态地修改字节码,以实现延迟加载(Lazy Loading)和其他高级特性。 8. ...
例如,Spring的beans配置文件(如`applicationContext.xml`)会定义bean及其依赖关系,SpringMVC的配置文件(如`dispatcher-servlet.xml`)会配置控制器和视图解析,而MyBatis的配置文件(`mybatis-config.xml`)则...