乙肝病毒乙肝表面抗体阳性性+5.31是什么意思

web项目如何获取容器 - 博客频道 - CSDN.NET
spring通过在web.xml 中配置ContextLoaderListener 来加载context配置文件,在DispatcherServlet中也可以来加载spring context配置文件,那么这两个有什么区别呢。&
ContextLoaderListener中加载的context成功后,spring 将 applicationContext存放在ServletContext中key值为&org.springframework.web.context.WebApplicationContext.ROOT&的attribute 中。 (servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,
this.context));可以通过 WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext) 或WebApplicationContextUtils.getWebApplicationContext(servletContext)方法来获取对应的applicationContext。&
DispatcherServlet加载的context成功后,如果 publishContext属性的值设置为true的话(缺省为true) 会将applicationContext存放在 org.springframework.web.servlet.FrameworkServlet.CONTEXT. + (servletName)的attribute中。&
例如 web.xml中配置如下&
&&& &servlet&&&
&&&&&&& &servlet-name&mvcServlet&/servlet-name&&&
&&&&&&& &servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&&&
&&&&&&& &init-param&&&
&&&&&&&&&&& &param-name&contextConfigLocation&/param-name&&&
&&&&&&&&&&& &param-value&classpath*:/spring/config/applicationContextMVC.xml&/param-value&&&
&&&&&&& &/init-param&&&
&&&&&&& &load-on-startup&1&/load-on-startup&&&
&&& &/servlet&&
则对应的applicationContext的attribute key值为org.springframework.web.servlet.FrameworkServlet.CONTEXT.mvcServlet。&
& 在每次request请求时,DispatcherServlet会将此applicationContext存放在request中attribute 值为 org.springframework.web.servlet.DispatcherServlet.CONTEXT中 (request.setAttribute(WEB_APPLICATION_CONTEXT_ATTRIBUTE,getWebApplicationContext());)。可以通过
RequestContextUtils.getWebApplicationContext 或 WebApplicationContextUtils.getWebApplicationContext(servletContext,attrname) 方法 来获取对应的applicationContext。&
& 从上面的分析可以看出,DispatcherServlet所加载的applicationContext可以认为是mvc私有的context,由于保存在servletContext中的key值与通过ContextLoaderListener加载进来的applicationContext使用的 key值不相同,因此如果只使用DispatcherServlet加载context的话,如果程序中有地方使用
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext) 来试图获取applicationContext时,就会抛出&No WebApplicationContext found: no ContextLoaderListener registered?&的exception。&
那我们怎么取了?&
ApplicationContext ac = (WebApplicationContext) this.getServeltContext().getAttribute(&org.springframework.web.servelt.FrameworkServlet.CONTEXT.这里填写web.xml配置的servlet的名称&);&
http://pbcljf./blog/static//&
方法一:在初始化时保存ApplicationContext对象&
ApplicationContext ac = new FileSystemXmlApplicationContext(&applicationContext.xml&);&
ac.getBean(&beanId&);&
说明:这种方式适用于采用Spring框架的独立应用程序,需要程序通过配置文件手工初始化Spring的情况。&
方法二:通过Spring提供的工具类获取ApplicationContext对象&
import org.springframework.web.context.support.WebApplicationContextU&
ApplicationContext ac1 = WebApplicationContextUtils.getRequiredWebApplicationContext(ServletContext sc);&
ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(ServletContext sc);&
ac1.getBean(&beanId&);&
ac2.getBean(&beanId&);&
这种方式适合于采用Spring框架的B/S系统,通过ServletContext对象获取ApplicationContext对象,然后在通过它获取需要的类实例。&
上面两个工具方式的区别是,前者在获取失败时抛出异常,后者返回null。&
其中 servletContext sc 可以具体 换成 servlet.getServletContext()或者 this.getServletContext() 或者 request.getSession().getServletContext(); 另外,由于spring是注入的对象放在ServletContext中的,所以可以直接在ServletContext取出
WebApplicationContext 对象: WebApplicationContext webApplicationContext = (WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);&
方法三:继承自抽象类ApplicationObjectSupport&
说明:抽象类ApplicationObjectSupport提供getApplicationContext()方法,可以方便的获取到ApplicationContext。&
Spring初始化时,会通过该抽象类的setApplicationContext(ApplicationContext context)方法将ApplicationContext 对象注入。&
方法四:继承自抽象类WebApplicationObjectSupport&
说明:类似上面方法,调用getWebApplicationContext()获取WebApplicationContext&
方法五:实现接口ApplicationContextAware&
说明:实现该接口的setApplicationContext(ApplicationContext context)方法,并保存ApplicationContext 对象。&
Spring初始化时,会通过该方法将ApplicationContext对象注入。&
在web应用中一般用ContextLoaderListener加载webapplication,如果需要在action之外或者control类之外获取webapplication思路之一是,单独写个类放在static变量中,&
类似于:&
public class AppContext {&
& private static AppC&
& private AbstractApplicationContext appC&
& public synchronized static AppContext getInstance() {&
&&& if (instance == null) {&
&&&&& instance = new AppContext();&
& private AppContext() {&
&&& this.appContext = new ClassPathXmlApplicationContext(&
&&&&&&& &/applicationContext.xml&);&
& public AbstractApplicationContext getAppContext() {&
&&& return appC&
不过这样,还是加载了2次applicationcontext,servlet一次,路径加载一次;觉得不如直接用路径加载,舍掉servlet加载&
在网上也找了些其他说法:实现ApplicationContextAware,,, 接口,或者servletcontextAware接口,还要写配置文件。有的竟然要把配置文件里的listener,换成自己的类,这样纯粹多此一举。不过有的应用不是替换,是在补一个listener,&
我在一版的jpetstore(具体那一版不知道)里发现了这个:&
[web.xml]里&
&&& &listener&&
&&&&&&& &listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&&
&&& &/listener&&
&&& &listener&&
&&&&&&& &listener-class&com.ibatis.jpetstore.util.SpringInit&/listener-class&&
&&& &/listener&&
其中SpringInit实现接口ServletContextListener :&
package com.ibatis.jpetstore.&
import javax.servlet.ServletContextE&
import javax.servlet.ServletContextL&
import org.springframework.context.ApplicationC&
import org.springframework.web.context.WebApplicationC&
import org.springframework.web.context.support.WebApplicationContextU&
public class SpringInit implements ServletContextListener {&
&&& private static WebApplicationContext springC&
&&& public SpringInit() {&
&&&&&&& super();&
&&& public void contextInitialized(ServletContextEvent event) {&
&&&&&&& springContext = WebApplicationContextUtils.getWebApplicationContext(event.getServletContext());&
&&& public void contextDestroyed(ServletContextEvent event) {&
&&& public static ApplicationContext getApplicationContext() {&
&&&&&&& return springC&
在其中的一个bean的构造里SpringInit获取applicationcontext,代码:&
& public OrderBean() {&
&&& this(&
&&&&&&&&&&& (AccountService) SpringInit.getApplicationContext().getBean(&accountService&),&
&&&&&&&&&&& (OrderService) SpringInit.getApplicationContext().getBean(&orderService&) );&
恩,这种在action,servlet之外的bean里获取applicationcontext的方法值得参考,应该有用&
排名:千里之外
(3)(2)(1)(1)(1)(1)(22)(1)(4)(2)(5)(1)(4)(3)(5)(6)(2)(2)(1)(1)(1)(2)(2)(1)(1)(1)(1)6744人阅读
小工具(6)
今天介绍一下springMVC的单元测试,可以参考spring进行
前提准备,springmvc的demo工程,这里就不做叙述了
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-core&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-beans&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-context-support&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-web&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-webmvc&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-orm&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-tx&/artifactId&
&/dependency&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-test&/artifactId&
&/dependency&
&dependency&
&groupId&junit&/groupId&
&artifactId&junit&/artifactId&
&/dependency&
controller层
import javax.servlet.http.HttpS
import org.springframework.beans.factory.annotation.A
import org.springframework.web.bind.annotation.PathV
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestP
import org.springframework.web.bind.annotation.RestC
import service.UserS
import domain.U
* UserController.
* @author Leon Lee
@RestController
@RequestMapping(value = &user&)
public class UserController {
* UserService interface.
@Autowired
private UserService userS
* Get user MSG.
* @param userId
* @return user Msg
@RequestMapping(value = &userMsg/{userId}&, method = RequestMethod.GET)
public User getUserMsg(@PathVariable(value = &userId&) String userId) {
return userService.getUserMsg(userId);
* Update user MSG.
* @param userId
* @param userName
* @return updated user MSG
@RequestMapping(value = &userMsg/{userId}&, method = RequestMethod.PUT)
public User putUserMsg(@PathVariable(value = &userId&) String userId, @RequestParam String userName,HttpSession session){
if(null == (String)session.getAttribute(&loginUser&))
return new User();
System.out.println((String)session.getAttribute(&loginUser&));
return userService.putUserMsg(userId, userName);
* Delete user.
* @param userId
* @return deleted user MSG
@RequestMapping(value = &userMsg/{userId}&, method = RequestMethod.DELETE)
public User delUserMsg(@PathVariable(value = &userId&) String userId){
return userService.delUserMsg(userId);
* Add user.
* @param userName
* @return added user MSG
@RequestMapping(value = &userMsg&, method = RequestMethod.POST)
public User postUserMsg(@RequestParam String userName){
return userService.postUserMsg(userName);
* login User. Note that do not send password as url.
* @param userId
* @param password
@RequestMapping(value = &userMsg/{userId}/{password}&, method = RequestMethod.GET)
public boolean loginUser(@PathVariable String userId, @PathVariable String password, HttpSession session){
if(&loginUser&.equals(userId)&&&loginUser&.equals(password)){
session.setAttribute(&loginUser&, userId);
单元测试类
这里的静态导入比较重要,有时候没办法自动导入的
就是下面的 import static xxx.*
另一点,@ContextConfiguration(locations = {&classpath:applicationContext.xml&,&classpath:applicationContext.mvc.xml&})
代表的是加载的配置文件,可以根据需要进行添加
package controller.
import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import javax.servlet.http.HttpS
import org.junit.B
import org.junit.T
import org.junit.runner.RunW
import org.springframework.beans.factory.annotation.A
import org.springframework.http.MediaT
import org.springframework.mock.web.MockHttpS
import org.springframework.test.annotation.R
import org.springframework.test.context.ContextC
import org.springframework.test.context.junit4.SpringJUnit4ClassR
import org.springframework.test.context.transaction.TransactionC
import org.springframework.test.context.web.WebAppC
import org.springframework.test.web.servlet.MockM
import org.springframework.test.web.servlet.MvcR
import org.springframework.transaction.annotation.T
import org.springframework.web.context.WebApplicationC
* spring mvc Test.
* @author Leon Lee
* @since spring-4.1.7
// spring 4.3 change to SpringRunner.class
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(locations = {&classpath:applicationContext.xml&,&classpath:applicationContext.mvc.xml&})
// do rollback
@TransactionConfiguration(defaultRollback = true)
@Transactional
public class TestTemplate {
@Autowired
private WebApplicationC
private MockMvc mockM
private MockHttpS
public void setup() {
// init applicationContext
this.mockMvc = webAppContextSetup(this.wac).build();
this.session = new MockHttpSession();
public void getUserMsg() throws Exception {
// get using get
this.mockMvc
.perform((get(&/user/userMsg/003&))
.accept(MediaType.parseMediaType(&application/charset=UTF-8&)))
.andExpect(status().isOk())
.andExpect(content().contentType(&application/charset=UTF-8&))
.andDo(print()); // print
// don't rollback
@Rollback(false)
public void putUserMsg() throws Exception {
// update using put
this.mockMvc
.perform((put(&/user/userMsg/003&))
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.param(&userName&,&新名字03号&)
.session((MockHttpSession)getLoginSession())
.accept(MediaType.parseMediaType(&application/charset=UTF-8&))
.andExpect(status().isOk())
.andExpect(content().contentType(&application/charset=UTF-8&))
.andDo(print()); // print
public void delUser() throws Exception {
// delete using delete
this.mockMvc
.perform((delete(&/user/userMsg/004&))
.accept(MediaType.parseMediaType(&application/charset=UTF-8&))
.andExpect(status().isOk())
.andExpect(content().contentType(&application/charset=UTF-8&))
.andDo(print()); //print
// don't rollback
@Rollback(false)
public void postUser() throws Exception{
// add using post
this.mockMvc
.perform((post(&/user/userMsg&))
.param(&userName&, &最新的用户&)
.accept(MediaType.parseMediaType(&application/charset=UTF-8&))
.andExpect(status().isOk())
.andExpect(content().contentType(&application/charset=UTF-8&))
.andDo(print()); //print
* 获取登入信息session
* @throws Exception
private HttpSession getLoginSession() throws Exception{
// mock request get login session
// url = /xxx/xxx/{username}/{password}
MvcResult result = this.mockMvc
.perform((get(&/user/userMsg/loginUser/loginUser&)))
.andExpect(status().isOk())
.andReturn();
return result.getRequest().getSession();
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:118658次
积分:1389
积分:1389
排名:千里之外
原创:30篇
转载:14篇
阅读:4194
(7)(5)(1)(1)(5)(3)(5)(1)(1)(2)(7)(4)(2)}

我要回帖

更多关于 乙肝病毒表面抗体阳性 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信