ssh中前后台的数据交互

本文详细介绍了SSH框架中前后台数据交互的多种方式,包括模型驱动、属性驱动和实体类驱动等从前台到后台的数据传递,以及通过值栈、session等从后台到前台的数据呈现方法。此外,还提到了在JSP页面中使用Struts2标签显示数据的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.首先说下前台传数据到后台的方式
1.模型驱动:
在Action里面实现模型驱动User类,再实现setter和getter方法,当提交表格或者在url里面传值(参数要和表格里面的属性名一样,比如在用ajax异步请求是url参数username和表格里面的属性名一样),然后action那边就可以通过user.username拿到,和下面的方法不一样。

2.属性驱动:
在url中传参数,例如abc=1,然后在action中实例这个属性,并设置setter和getter方法,可以拿到这个值,form表格也一样,提交表格的时候输入框里面的属性名在action中实例化和setter,getter。

3.实体类驱动:
和第二稍稍不同,这里将表格里面的属性封装到一个实体类中,然后实例化实体类,再用实体类中的属性来获取从前台表格传来的数据

二.从后台传到前台
1.一般这里说的是从action到jsp的,从dao中查询到后,一般可以存到值栈中。
ActionContext.getContext().getValueStack().set("pb", pb);

然后在jsp页面直接调用pb就可以了,不用#。

s:iterator var="p" value="pb.list">
                            <li>
                                <a href="${pageContext.request.contextPath}/product_findByPid.action?pid=<s:property value="#p.pid"/>"/>
                                    <img src="${pageContext.request.contextPath}/<s:property value="#p.image"/>" width="170" height="170" style="display: inline-block;"> 
                                    <span style='color:green'> <s:property value="#p.pname" /> </span> 
                                    <span class="price"> 商城价: ¥<s:property value="#p.shop_price" /></span> 
                                </a>
                            </li>
                        </s:iterator>

2.存到session中,数据在一个会话中有效,所以用户登录信息一般存在session中,还有就是比如需要在一个会话中都要显示的数据,比如一级分类等,也要保持session中,而之前的从后台回到前台页面显示的存到值栈就行了。

ServletActionContext.getRequest().getSession().setAttribute("existUser", existUser);

ServletActionContext直接继承了ActionContext,当然也继承了它父类的很多功能,它还提供了直接访问Servlet的相关对象的功能.

三.最后总结下在jsp页面显示的方法
1.action实现了模型驱动,在dao查询到返回数据之后,直接调用就行。例如下面的product就是在action中的模型驱动。

<s:property value="product.shop_price"/>

2.存到session或者值栈中后,用Struts2中的标签直接调用,这里的list就是存在session中的。用一个迭代器吧返回的列表都显示出来

<s:iterator var="c" value="#session.list">
                        <dl>
                            <dt>
                                <a href="${pageContext.request.contextPath}/product_findByCid.action?cid=<s:property value="#c.cid"/>&page=1"><s:property value="#c.cname"/></a>
                            </dt>
                        <s:iterator var="cs" value="#c.categorysecond">
                            <dd>
                                <a href="${pageContext.request.contextPath}/product_findByCsid.action?csid=<s:property value="#cs.csid"/>&page=1"><s:property value="#cs.csname"/></a>
                            </dd>

                        </s:iterator>
                        </dl>
                    </s:iterator>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值