`
ssxxjjii
  • 浏览: 948505 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

在 Spring Bean 內取得 HttpServletRequest

 
阅读更多

使用 Java 去開發 Web 應用程式時,大部份時候都會使用到 HttpServletRequest 來做各項操作,例如拿取用戶的 IP 地址:

String ip = request.getRemoteAddr();
又例如要拿取用戶的 Session 物件:
 HTTPSession session = request.getSession();


有很多操作也是靠 HttpServletRequest 來做。
需要在 Spring bean 要取得 HttpServletRequest 物件時,如果每次都經由 HttpServlet 拿到 HttpServletRequest 物件後再傳入去 Spring bean,這樣的做法太煩人了,Spring Framework 提供了一個方法可以不用靠自己的 HttpServlet 傳入就可以取得 HttpServletRequest。
以下是程式碼:
 ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
HttpServletRequest request = attr.getRequest();

在 web.xml 內亦要加上一個 listener 以防 HttpServletRequest 在其他地方使用時會發生 Thread 方面的問題:
<listener>    
<listener-class>     
    org.springframework.web.context.request.RequestContextListener    
</listener-class>
</listener>

使用 Spring Framework 3 的也可以使用 @Autowired 的方式令 Spring 自動注入 HttpServletRequest:
@Autowiredprivate HttpServletRequest request;

分享到:
评论

相关推荐

    00000029_bean-cookie的用法.rar

    Bean主要在Java企业级应用开发中,特别是在Spring框架中,而Cookie则在网络编程特别是Web应用中常见。下面我们将详细探讨这两个概念以及它们的用法。 首先,让我们了解一下“Bean”。在Java中,Bean通常指的是符合...

    JspServletBean example

    这里,EL表达式`${user.name}`和`${user.age}`会自动查找请求或session范围内的`user` Bean,并调用对应的getter方法获取属性值。 结合JSP、Servlet和Bean,可以实现MVC(Model-View-Controller)架构,提高代码的...

    springMVC示例

    标签 "java" 暗示了本示例与 Java 编程语言密切相关,"springBean" 指的是 Spring 框架中的依赖注入特性,它允许我们通过配置文件或注解声明 Bean 的实例化和依赖关系。Spring Bean 可以是任何 Java 对象,它们被 ...

    struts2+spring2.5.x

    通过使用命名参数,我们可以更方便地处理多参数的情况,避免了传统方式下通过HttpServletRequest对象获取参数的繁琐步骤。例如,一个Action方法可能如下所示: ```java public class MyAction { private String ...

    spring讲义4.txt

    - 最后,在Action类中,开发者可以通过`getWebApplicationContext()`方法获取到Spring的ApplicationContext实例,进而调用其中的bean服务。 3. **示例代码**:以下是一个使用SpringActionSupport的LoginAction示例...

    spring3mvc导入包

    `spring-context`提供了应用上下文,它是Spring管理Bean的容器,允许你定义和配置应用组件,而`spring-beans`则包含了Bean的定义、创建和配置的相关支持。 为了处理HTTP请求和响应,你需要`spring-web.jar`,它包含...

    38. Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】

    在Spring Boot应用中,随着系统复杂度的增加,单一服务器往往无法满足高并发、高可用的需求,因此我们会采用分布式架构。然而,在分布式环境下,传统的基于HTTP Session的状态管理方式会遇到问题,因为每个服务器都...

    spring-web和spring-webmvc_4.2.4

    5. **ContextLoaderListener**:这是Spring Web应用的一个启动监听器,它会创建一个全局的ApplicationContext,用来管理所有Web应用范围内的bean。 接下来,我们关注`springs-webmvc`模块,它是Spring MVC的核心,...

    spring mvc 拦截器获取请求数据信息.rar

    - `HttpServletRequest`对象:在拦截器中,可以通过`HttpServletRequest`对象来获取请求参数、请求头、请求URL等信息。例如,`request.getParameter("key")`可以获取指定参数名的值。 - `@ModelAttribute`注解:在...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。  如何选择这些发布包,决定选用哪些发布包其实相当简单。如果你正在构建Web应用并将全程使用Spring,那么最好就使用单个全部的 ...

    Spring拦截器,高级参数绑定

    在Spring框架中,拦截器(Interceptor)是一种强大的工具,它允许开发者在请求处理前后执行自定义逻辑,例如日志记录、权限检查等。Spring MVC中的拦截器是基于AOP(面向切面编程)原理实现的,可以理解为对...

    Spring MVC 入门实例

    你可以在 props 标签内配置多个 prop 标签. 我们将在后面编写 com.ideawu.HelloController 类. 上面, 我们在 web.xml 文件中告诉 ContextLoaderListener, 我们还有另外两个配置文件 /WEB-INF/database.xml 和 /...

    最新最全的spring开发包

    spring jar包详细介绍 spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包...模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。

    Spring + struts 整合的三种主要方式

    在上面的示例中,我们通过`getWebApplicationContext()`方法获取到了Spring的上下文,然后从中取出所需的Bean(在这个例子中是`LoginDao`)。这种方式的好处在于可以非常方便地利用Spring的依赖注入功能,同时保留...

    spring_MVC源码

    -- 这里在配成spring,下边也要写一个名为spring-servlet.xml的文件,主要用来配置它的controller --&gt; 19. *.do&lt;/url-pattern&gt; 20. &lt;/servlet-mapping&gt; 21. &lt;welcome-file-list&gt; 22. &lt;welcome-file&gt;index.jsp...

    spring 整合 struts 文档

    这种方式主要是在Spring中定义一个代理对象,用于处理Struts Action的调用,使得Struts Action可以像普通Spring Bean一样进行管理。 ##### 实施步骤 1. **配置DelegatingActionProxy** 在Spring的配置文件中定义`...

    spring-ext-handler-mapping.rar_ext_spring ext_spring mvc

    Spring MVC中的HandlerMapping接口定义了查找处理方法的核心方法,如`getHandler(HttpServletRequest request)`。开发者可能在此基础上实现自己的逻辑,例如添加对RESTful API的支持,或者引入动态路由策略。 4. **...

    Java Spring Controller 获取请求参数的几种方法详解

    本文将详细讲解在Spring Controller中获取请求参数的六种常见方法。 1. **直接作为方法参数** 当请求是GET类型且`Content-Type`为`application/x-www-form-urlencoded`时,可以直接在Controller方法的参数列表中...

    spring-struts.jar

    在实际项目中,整合步骤通常包括配置 Struts 的配置文件(struts-config.xml),添加 Spring 的配置文件(如 applicationContext.xml),以及在 Struts 的 Action 类中声明并注入 Spring Bean。例如,一个简单的 ...

Global site tag (gtag.js) - Google Analytics