天天看点

SSH网上商城颗粒归仓【三Jsp页面技术点】背景路径问题Why jsp页面 in WEB-INFStruts标签总结

背景

这次在项目中与到了jsp页面中的struts标签的一些技术点,初次接触这些技术点的时候并没有感觉到陌生,反而感觉跟angular的机制非常的思想,所以学起来也非常的简单

路径问题

jsp中我们采用相对路径还是绝对路径,这个问题很是让人头痛,原因就是如果采用的是相对路径那么他也有他的好处就是代码非常的灵活,但是如果我们想复制粘贴代码就会非常的麻烦,原因是因为你的相对路径都是不一样的,所以很容易出错,

这个时候我们出现的解决方案就是使用

${pageContext.request.contextPath},
           

他的作用就是去出部署的应用程序名,不管部署路径如何,他的所有路径都是正确

例如我们的图片的路径是

/images/title.gif”

,为了访问出错我们在前面加上

${pageContext.request.contextPath},

这样你的路径就不会再出错了,可以达到同样效果的还有

例如我们form表单

action="${pageContext.request.contextPath }/servlet/addBookServlet",我请求的就是servlet中的addBookServlet方法
           

Why jsp页面 in WEB-INF

为什么我的jsp页面都要放到WEB-INF下面,原因就是如果我们放到了WEB-IF下面,那么我们只有通过请求才可以访问,所以很好的实现了我们项目的隐蔽性,而且我们不是让客户直接访问jsp页面的而是通过请求来进行访问

说到访问的请求了,那么我来实现如何当我们的Action返回给Struts的时候,可以给我们正常的返回我的页面,这里涉及到直接根据路径进行返回,还有重定向返回

重定向返回与转发返回非常的相似,也非常容器弄混,所以我们通过举一个例子来说一下如何区分

重定向就是我去A家借钱,可是A家返回信息告诉我说他们家没有钱,不过他告诉我B家有钱,所以我就又去B家借钱,然后通过两次请求我就终于借到了钱

转发就是我就A家找老王借钱,但是老王没有钱,但是他告诉他的妻子说,他妻子有钱,所以他就把钱借给我了,所以我只请求了一次

重定向的缺点就是重定向无法保存数据,原因就在于他请求了两次

<result name="updateSuccess" type="redirectAction">adminCategorySecond_findAll.action?page=</result>
           

我们在使用的时候type=“redirectAion” 或者是type=“redirect”他们连个是有区别的,第一个热directAion是不用代action后缀的,他自动会帮助我们加上去,而redirect是必须要写上后缀的

Struts标签

1<%@taglib prefix=”s” url=”/struts-tags”%>

这是表示的我们引入Struts的标签库,我们可以使用struts中的标签。struts中的标签不依赖与表现技术,而且他还提供了大量的标签,可以在我们的表现层中使用

2表示判断使用,如果我们的状态为1则显示这里面的内容

<s:if test="#order.state == 1">
    <a href="${ pageContext.request.contextPath }/order_findByOid.action?oid=<s:property value="#order.oid" />">付款</a>
</s:if>
           

3.迭代iteratorlist代码

其实我感觉就跟我们 angular4是一样的,ngfor标签来实现循环进行显示到页面上

<s:iterator var="orderItem" value="#order.orderItems">
    <tr>
        <td width="60">
            <img src="${ pageContext.request.contextPath }/<s:property value="#orderItem.product.image"/>"/>
        </td>
        <td>
            <s:property value="#orderItem.product.pname"/>
        </td>
        <td>
            <s:property value="#orderItem.subtotal"/>
        </td>
        <td class="quantity" width="60">
            <s:property value="#orderItem.product.shop_price"/>
        </td>
        <td width="140">
            <span class="subtotal">¥<s:property value="#orderItem.subtotal"/></span>
        </td>
    </tr>
</s:iterator>
           

4.标签

它用于访问我们Action中栈值所存储的属性,这个表示的是对象中属性的值

<s:property value="#orderItem.subtotal"/>
           

5使用公共页面

在我们后天的时候,当我们遇到公共的功能的时候我们会抽取出来封装成一个类,每当使用的时候我们调用就可以了 ,在前台页面上也可以实现这个功能,我们把菜单页面进行抽取。这句代码的意思就是我们包含于menu.jsp页面

<

%@ include file="menu.jsp" %>

总结

也许只有一步步的走过才知道这其中的感觉吧!