-->jsp include的使用方式
关于navigation.jsp、关于footer.jsp的文件引入,可能是每一个项目都必须要用到jsp include的,那么引入时应该是动态引入还是静态引入呢,可能会各有不同。
静态引入,即不需要传入参数的那种:
<!-- 这是静态的引入文件,如果需要动态的引入文件,可以考虑使用jsp include的形式 -->
<%@ include file="../common/navigation.jsp" %>
<%@ include file="../common/footer.jsp" %>
如果需要动态引入,以传入相关参数,确定某一项为active的时候,则可以:
<jsp:include page="../common/navigation.jsp" flush="true">
<jsp:param name="index" value="${baseInfo.index} " />
</jsp:include>
navigation.jsp页面可以通过这样的方式获取到传入的参数:
<input type="hidden" id="index" value="${param.index}"/>
无论是静态引入,还是动态引入,都可以帮助我们减少代码的冗余和重复,这个也是师兄一直和我说的问题,要谨记,要谨记。
静态引入相对而言效率会更高,动态引入则胜在灵活,具体要根据需要来进行选择。
-->jsp include的实现方式
静态引入和动态引入在实现的时候会有所不同。
主页面index.jsp静态引入页面navigation.jsp时,会在编译阶段之前将navigation.jsp文件中的内容包含进index.jsp,而后编译成一个index.java、一个index.class,navigation.jsp内不需要声明contentType;
主页面index.jsp动态引入页面navigation.jsp时,会各自编译成java文件和class文件,即一个index.java、一个index.class、一个navigation.java、一个navigation.class,在index,java中会多出一句对navigation.java的引用,此时需要对navigation.jsp根据需要指定contentType。
-->Session的使用方式
可能需要校验Session是否过期、向Session中添加一些内容、从Session中移除一些内容、获取Session中的一些内容,整理一下:
<!-- 为session设置一个过期时间 -->
<session-config>
<session-timeout>10</session-timeout>
</session-config>
//向Session中添加一些内容
ServletActionContext.getRequest().getSession().setAttribute("userid", userid);
ServletActionContext.getRequest().getSession().setAttribute("nickname", nickname);
ServletActionContext.getRequest().getSession().setAttribute("authoinfo", authoinfo);
ServletActionContext.getRequest().getSession().setAttribute("headimg", headimg);
//获取Session中的一些内容
String userid = ServletActionContext.getRequest().getSession().getAttribute("userid");
String nickname = ServletActionContext.getRequest().getSession().getAttribute("nickname");
String authoinfo = ServletActionContext.getRequest().getSession().getAttribute("authoinfo");
String headimg = ServletActionContext.getRequest().getSession().getAttribute("headimg");
//从Session中移除一些内容
ServletActionContext.getRequest().getSession().removeAttribute("userid");
ServletActionContext.getRequest().getSession().removeAttribute("nickname");
ServletActionContext.getRequest().getSession().removeAttribute("authoinfo");
ServletActionContext.getRequest().getSession().removeAttribute("headimg");
-->action后缀由action改为tong
Struts2中的Action默认后缀为action,直接访问一个Action时,必须写成actionName.action的形式(如超链接)。
使用Form标签时,需要注意,在Form的action属性中不需要加.action后缀,action后缀会自动补全。
如果想把action后缀改成其他的,如tong,需要把web.xml文件中的过滤器修改为.tong。
这里定义了哪些链接会被Struts2框架捕获,如下:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.tong</url-pattern>
</filter-mapping>
而后在WEB-INFclasses下添加一个文本文件:struts.properties,里面添加一行:struts.action.extension=tong,此文件如果在MyEclipse中,可以放在src目录下。
同时,也可以在struts.xml中进行设置:
<struts>
........
<constant name="struts.action.extension" value="tong"/>
</struts>
感谢:https://blog.csdn.net/xueyepiaoling/article/details/6258369等等的分享~