`
ssxxjjii
  • 浏览: 938225 次
  • 性别: 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;

分享到:
评论

相关推荐

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

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

    00000029_bean-cookie的用法.rar

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

    spring jar 包详解

    (2) spring-beans.jar 这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,...

    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 ...

    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拦截器,高级参数绑定

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

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

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

    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应用单元测试是很方便的。

    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。例如,一个简单的 ...

    spring拦截器的简单例子

    在上面的配置中,`&lt;mvc:interceptor&gt;` 内的 `&lt;mvc:mapping&gt;` 定义了拦截器生效的 URL 路径,`&lt;bean ref="myInterceptor"&gt;` 是我们之前创建的拦截器实例。 通过这样的配置,当请求匹配到指定路径时,Spring 就会调用...

    利用spring security控制同一个用户只能一次登陆

    标题中的“利用Spring Security控制同一个用户只能一次登录”是指在基于Spring Security的Web应用程序中实现单点登录(Single Sign-On, SSO)的功能,确保同一时间只有一个设备或浏览器会话可以登录同一用户的账户。...

    基于Spring的HttpInvoker实现改写egova_invoker.zip

    基于Spring的... //获取targetObject,即接口invocation.getInterfaceClazz()实现类  Object targetObject = new Object();  invocation.invoke(targetObject);  }  });  }  } 标签:egova

    SSH笔记-web应用下使用Spring

    在Web环境中,Spring可以通过多种方式初始化和管理Bean,其中一种常见的方式是通过Web应用上下文(WebApplicationContext)。 1. **配置Listener类**: 你可以创建一个实现了ServletContextListener接口的自定义...

    spring security 参考手册中文版

    12.2.3使用RequestPostProcessor在Spring MVC测试中以用户身份运行 106 作为用户在Spring MVC测试中使用注释运行 108 12.2.4测试HTTP基本认证 109 12.3 SecurityMockMvcRequestBuilders 109 12.3.1测试基于表单的...

Global site tag (gtag.js) - Google Analytics