在这里,我们将给大家分享关于spring–从JSP文件中的会话范围bean访问数据的知识,让您更了解jsp+spring的本质,同时也会涉及到如何更有效地Bean的Spring会话范围如何工作?Web
在这里,我们将给大家分享关于spring – 从JSP文件中的会话范围bean访问数据的知识,让您更了解jsp+spring的本质,同时也会涉及到如何更有效地Bean的Spring会话范围如何工作?Web上下文中Bean的默认范围是什么?、Bean的会话范围在Spring MVC应用程序中如何工作?、IDEA整合Spring Boot项目访问jsp文件、java – JSF CDI:对话范围bean [s]最佳实践的内容。
本文目录一览:- spring – 从JSP文件中的会话范围bean访问数据(jsp+spring)
- Bean的Spring会话范围如何工作?Web上下文中Bean的默认范围是什么?
- Bean的会话范围在Spring MVC应用程序中如何工作?
- IDEA整合Spring Boot项目访问jsp文件
- java – JSF CDI:对话范围bean [s]最佳实践
spring – 从JSP文件中的会话范围bean访问数据(jsp+spring)
我正在尝试在Spring Web MVC 3中开始使用会话范围的bean.我将此行放在我的调度程序配置中:
Box.sessionbeans.UserInfo" scope="session" />
这是net.sandBox.sessionbeans.UserInfo:
package net.sandBox.sessionbeans;
public class UserInfo {
public String username;
public UserInfo() {
this.username = "Unregistered User";
}
}
如何在代表我的应用程序的View部分的JSP文件中访问会话范围的bean?我试过这个……
……但这没有给我预期的结果,即
相反,我得到了
我究竟做错了什么?
最佳答案
您可以在问题中显示它.问题可能出在您的配置中.看看你是否在视图中公开你的bean,如下所示:
Bean的Spring会话范围如何工作?Web上下文中Bean的默认范围是什么?
我正在研究Spring MVC,但有以下疑问:
- 会话范围的目的到底是什么?
阅读文档,我知道这将bean定义的范围限定为HTTP会话。仅在可感知网络的Spring
ApplicationContext上下文中有效。而且,每个用户会话一次创建一个新实例。
但是什么时候才使用呢?出于什么目的?你能举一个实际的例子吗?
- 在Spring MVC中,Web上下文的默认范围是什么?
我知道在Spring中,bean的默认范围是 单例, 但是在Web上下文中,bean的范围如何?
Bean的会话范围在Spring MVC应用程序中如何工作?
我在Spring MVC中还很陌生,我对bean 的 会话范围 有疑问。
进入一个项目,我有一个Cart
bean,这个:
@Component
@Scope(value=WebApplicationContext.SCOPE_SESSION,proxyMode = ScopedProxyMode.TARGET_CLASS)
public class Cart {
private Map<Product,Integer> contents = new HashMap<>();
public Map<Product,Integer> getContents() {
return contents;
}
public Set<Product> getProducts() {
return contents.keySet();
}
public void addProduct(Product product,int count) {
if (contents.containsKey(product)) {
contents.put(product,contents.get(product) + count);
}
else {
contents.put(product,count);
}
}
public void removeProduct(Product product) {
contents.remove(product);
}
public void clearCart() {
contents.clear();
}
@Override
public String toString() {
return contents.toString();
}
public double getTotalCost() {
double totalCost = 0;
for (Product product : contents.keySet()) {
totalCost += product.getPrice();
}
return totalCost;
}
}
因此,容器会自动将该bean识别为组件,并通过以下方式将其设置为 会话bean :
@Scope(value=WebApplicationContext.SCOPE_SESSION,proxyMode = ScopedProxyMode.TARGET_CLASS)
因此,据我了解,这意味着它将为每个用户会话自动创建一个bean。
在我的示例中,Cart
该类表示购物车,已登录的用户将想要购买的物品放入其中。这是否意味着Cart
每个登录的用户部分都存在一个bean
HttpSession
?因此,此bean进入了会话,用户可以在会话中添加或删除项目。这种解释正确吗?或者我缺少什么?
另一个疑问与proxyMode = ScopedProxyMode.TARGET_CLASS
属性有关。这到底是什么意思呢?为什么将它应用于此bean?
IDEA整合Spring Boot项目访问jsp文件
官方不推荐使用jsp文件作为视图!!!
配置如下:
1,Pom文件中添加依赖:
<!--添加jsp依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<scope>provided</scope>-->
</dependency>
2,application.yml中添加相关配置:
server:
port: 8080
#设置mvc页面跳转
mvc:
view:
prefix: /WEB-INF/jsp/
suffix: .jsp
3,项目整体结构:
注:
1,webapp和java,resource是同级目录。
2,jsp页面的位置为:/WEB-INF/jsp (jsp页面默认位置在WEB-INF下的jsp目录)
3,application.yml中对于页面位置的配置,prefix: /WEB-INF/jsp/,即使写为/jsp,也不能起作用,而是执行的/WEB-INF/jsp/
4,控制器Controller配置跳转:
注意:
1,@Controller不能写为@RestController,否则访问出错。
2,@RequestMapping(value = "index",method = RequestMethod.GET)可以简写为@RequestMapping( "index")
@Controller
public class IndexController {
private static final String INDEX="index";
@RequestMapping(value = "index",method = RequestMethod.GET)
public String getIndex() {
return INDEX;
}
}
5,启动TraceabilityApplication,访问页面:
访问地址为:http://localhost:8080/index
页面效果为:
java – JSF CDI:对话范围bean [s]最佳实践
但是好奇的是如何实现这一点很好,关于什么时候开始对话,什么时候关闭它.
在我的情况下,我有每个JSF页面的每个CDI bean.让我们说我有一个菜单,当它被点击时,这将导致页面A,从A可以导致B,B可能导致C,C可以导致D,所有这4个页面都连接在一个链.
从B或C或D Bean访问A的bean属性是可能的,也可以从C或D bean访问B的属性等等.
现在我很困惑:
>所有这些A B C D是否应该
在会话范围内,或
也许只是A?因为我想
有时从另一个页面
在ABCD链之外,像一个页面
F,它可以导航到页面B,
虽然我不知道如何供应
数据到豆B还没有.
>所有这些A B C D是否应该
合并成一个豆
>哪里和什么时候开始
对话,我想到了
建设者,但我不认为这是一个
好主意,因为我喜欢开始
第一次访问时的对话
页面,而不是豆
>何时何地停止
对话,所以不会有
未使用的资源挂在身边
请分享你的想法.
解决方法
您所描述的范围可能更适合像窗口范围这样的自定义范围.实施这一范围的两个项目是:
> Apache MyFaces CODI
> IceFaces有一个JSF(非CDI)Window scope implementation.
不过,我鼓励你重新思考你的豆结构.我已经非常喜欢View范围,再加上JSF 2视图参数来将信息从一个页面传播到另一个页面(以及从一个View范围实例到另一个).
MyFaces“View Access”范围似乎是另一种整洁的方法,只要你浏览的页面保持对该范围的引用,那么bean就会保留在范围内.
关于spring – 从JSP文件中的会话范围bean访问数据和jsp+spring的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Bean的Spring会话范围如何工作?Web上下文中Bean的默认范围是什么?、Bean的会话范围在Spring MVC应用程序中如何工作?、IDEA整合Spring Boot项目访问jsp文件、java – JSF CDI:对话范围bean [s]最佳实践等相关知识的信息别忘了在本站进行查找喔。
本文标签: