栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

jsp useBean由servlet的getAttribute为NULL

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jsp useBean由servlet的getAttribute为NULL

您似乎误解了

jsp:useBean

首先,您已声明该bean在会话范围内,并用当前请求的所有参数填充它。

<jsp:useBean id="user"  scope="session">    <jsp:setProperty name="user" property="*"/></jsp:useBean>

因此,此bean作为名称存储为 会话 属性

user
。您需要在servlet中将其作为会话属性而不是请求属性进行检索。

RateCode_ user = (RateCode_) request.getSession().getAttribute("user");

user
顺便说
rateCode
一下,这是一个可怕且令人困惑的属性名称,我将其重命名为其他名称,但
_
最后没有这个奇数)

但是,它将不包含任何内容。在

getCode()
getDescription()
返回
null
。在
<jsp:setProperty>
已即
没有
在你试图访问它在servlet这一点与所有请求参数填充它。仅当您将包含参数的请求转发回JSP页面时,才会这样做。但是,这发生在servlet中的业务逻辑之外。

您需要自己收集它们作为请求参数。首先 摆脱

<jsp:useBean>

JSP中的全部内容,并在servlet的
doPost()
方法中执行以下操作:

RateCode_ user = new RateCode_();user.setCode(request.getParameter("pre"));user.setDescription(request.getParameter("description"));// ...request.setAttribute("user", user); // Do NOT store in session unless really necessary.

然后您可以在JSP中如下访问它:

<input type="text" name="pre" value="${user.pre}" /><input type="text" name="description" value="${user.description}" />

(这仅对 XSS攻击敏感,您想安装JSTL并使用

fn:escapeXml

不,你 不是
需要

<jsp:useBean>
在JSP中。保持现状,当您将MVC(第2级)方法与实际的servlet一起使用时,它几乎没有任何价值。该
<jsp:useBean>
仅供MV设计(MVC1级)是有用的。要保存收集请求参数的样板代码,请考虑使用MVC框架或Apache Commons BeanUtils。另请参见以下链接以获取提示。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/373976.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号