Spring没有javax.servlet和HttpServletRequest获取ip地址

时间:2014-12-06 22:39:21

标签: java spring servlets gradle

我有一个项目

https://github.com/CarefreeCoding/Gradle-Spring-Hibernate-example

我希望能够获得访问者的IP地址。要做到这一点,我需要使用HttpServletRequest,因为我通过搜索找到了。

但似乎找不到javax.servlet库。

我已尝试在我的build.gradle脚本中包含'javax.servlet:servlet-api:2.5',但这会在this question中解释我的项目。

所以问题是。我怎样才能使用

中的库
    'org.springframework:spring-core:4.1.2.RELEASE',
    'org.springframework:spring-web:4.1.2.RELEASE',
    'org.springframework:spring-webmvc:4.1.2.RELEASE',
    'org.springframework:spring-orm:4.1.2.RELEASE',
    'org.springframework:spring-context:4.1.2.RELEASE',
    'org.springframework:spring-tx:4.1.2.RELEASE'

获取访问者的IP地址?或者至少以某种方式访问​​HttpServletRequest。

2 个答案:

答案 0 :(得分:1)

使用以下方式修改 build.gradle

providedCompile 'javax.servlet:javax.servlet-api:3.1.0' //configuration taken from war plugin

//below dependencies added because the app wasn't starting properly
compile 'ch.qos.logback:logback-classic:1.0.13'
compile 'ch.qos.logback:logback-core:1.0.13'
compile 'log4j:log4j:1.2.17'
compile 'org.slf4j:slf4j-api:1.7.5'
compile 'org.slf4j:jcl-over-slf4j:1.7.5'
compile 'org.slf4j:jul-to-slf4j:1.7.5'
compile 'org.slf4j:slf4j-log4j12:1.7.5'

然后修改src/main/java/example/controllers/IndexController.java

package example.controllers;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/")
public class IndexController {
    @RequestMapping(method = RequestMethod.GET)
    public String printWelcome(ModelMap model, HttpServletRequest request) {
        System.out.println("Request " + request.getRemoteAddr());
        model.addAttribute("message", "Hello World!!!");
        return "indexPage";
    }
}

打印请求0:0:0:0:0:0:0:1

答案 1 :(得分:0)

正如other问题中所述,您已经在项目中使用了servlet-api,无需在项目定义中添加javax.servlet:servlet-api:2.5。

因此,您将能够access HttpServletRequest

但是,正如other问题中所提到的,你有servlet-api的版本3.0.1,它不包含getRemoteAddr()方法,如果这是你想要使用的。