三天看了三种新技术的教学视频作为jsp学习的收尾吧,前几天留言板小样例的课堂讲解反馈效果极差,其中一个原因就是里面的代码太乱,显示页面嵌套过多java的逻辑代码,显得极不规范,所以就想用EL表达式结合jstl的一些标签尽量使得代码能够整洁规范一些,刚好也可以将新学的东西运用在结课的课程设计项目上,perfect!
一、EL表达式和jstl技术
正规的JavaWeb开发注重代码的规范性,虽然jsp设计的初衷之一就是可以嵌套Java代码,对于初学者来说,调试也比较方便,不像servlet和Javabean那样,一旦修改就要重启tomcat服务器,但是熟练运用之后,就会发现大量java代码夹杂在jsp页面中让页面显得十分臃肿,不利于维护,这样的代码严重背离了MVC的设计模式,与web各式框架的理念相悖,这就导致出现了EL表达式代替java获取页面参数,jstl提供代替java代码的逻辑语句(if、for循环等)。
下面简单介绍一些近日学到的东西,不全,但入了门,以后要用就很方便了。
1.EL表达式的语法格式: ${标识符}
例如:¥{username}
它的意思是取出某一范围内名称为username的值。
2.EL表达式中属性的范围有PageScope、RequestScope、SessionScope、ApplicationScope。对应jsp的四种页面属性。当我们使用EL表达式从某个范围取值时,他会依次从以上四个域中找,找到就不再继续找,若都没有则返回null值。如果你同时使用了下面两条语句:
request.setAttribute("username",username1);
session.setAttribute("username",username2);
而你现在要取出session中的username2,为了避免返回的值不是request中的username1,你就可以写成:
${sessionScope.username}
3.EL表达式内置对象${param}和${paramValues}的使用主要用于获取表单提交的值:
例如:
${param.username} 相当于java脚本中的<% request.getParameter("username"); %>
如果复选框提交了多个(这里为3个)用户名:
${paramValues.username[0]}
${paramValues.username[1]}
${paramValues.username[2]}
相当于<% request.getParameter("username") %>
4.jstl表达式使用需要导入jar包,
官方地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
下载standard.jar和jstl.jar文件,放到项目的lib文件夹下。
然后在使用页面进行引入,
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
5.条件语句<C:if>
<c:if test="<1>0>" var="<string>" scope="<string>">
//通过if条件后实际执行的代码,上面的var属性跟scope属性(默认为Page)可以不写
</c:if>
6.循环语句<C:forEach>
<c:forEach var="i" begin="1" end="5">
Item <c:out value="${i}"/><p> //<c:out ...>相当于System.out.println(...);
</c:forEach>
二、filter过滤器
在servlet编写,通过调用Filter接口中的doFilter方法可以实现对某些请求的拦截和过滤。字符编码使用过滤器叫方便。
三、JAVA反射
学完了xml的反射技术,看完还是觉得不是很理解反射的作用或者优点,之前的java基础课没有上到相关的内容,去网上查疑解惑,发现这项技术是比较接近底层开发的,难度自然不言而喻,最后就推荐大家可以看看下面两篇文章。
1.