JSP的使用以及EL和JSTL的使用

2021-02-04 05:16

阅读:657

标签:for   att   lse   有一个   res   city   数据   其他   conf   

1.1.1. 为什么有JSP规范

Servlet技术产生以后,在使用过程中存在一个很大的问题,即为了表现页面的效果而需要输出大量的HTML标签,这些标签在Servlet中表现为一个个的字符串常量。这种输出页面的方式不仅仅增加了开发时对页面的控制难度,也不利于后期的维护。为了能够将Servlet中用于表现的功能分离出来,提高视图的开发效率,推出了JSP这种技术,主要用于将Servlet中负责显示的语句抽取出来。

1.1.2. 什么是JSP

JSP(Java Server Page)是Sun公司制定的一种服务器端动态页面技术的组件规范,以“.jsp”为后缀的文件中既包含HTML静态标记用于表现页面,也包含特殊的代码,用于生成动态内容。

JSP作为简化Servlet开发的一种技术,实质上最终依然要转变为Servlet才可能运行,只不过这个转变过程由Servlet容器来完成。所以遵循JSP的编写规范才能使得JSP转变为需要的Servlet。

 九大内置对象:            作用域

  pageContext(页面上下文对象)     page(页面执行期)

  request(请求对象)          一次请求

  response(响应对象)          一次响应

  session(会话对象)          会话期

   application(应用程序对象)       程序运行状态

   out(输出对象)             page

   config(配置对象)            page

   exception(异常)            page  

   page(页面对象)            page  

 四大域对象(保存数据,实现传递)

     pageContext 

     request

     session

     application

 jsp中常用的三种指令(    

    page指令

    include指令

    taglib指令

  jsp中导包(    )

 

EL表达式的使用

  方式一:${对象名.属性名}  例:${user.name}

    执行的过程为:从pageContext、request、session、application中依次查找绑定名为“user”的对象,找到后调用“getName”方法,将返回值输出。

    假定在session中绑定了一个对象,如下:

    User  obj = new User(1,“胡萝卜”);

    session.setAttribute(“user”,obj);

    那么${user.name}等价于下面代码:

    

          User u = (User)session.getAttribute(“user”);

          out.print(u.getName();

    %>

  方式二:${对象名[“属性名”]}

    假定在Servlet中有如下代码:

    User obj = new User(1,”胡萝卜”);

    session.setAttribute(“user”,obj);

    session.setAttribute(“pName”,”id”);

    在JSP中编写如下代码会输出“1”:

    ${sessionScope.user[“id“]}

    在JSP中编写如下代码也会输出“1”:

    ${sessionScope.user[sessionScope.pName]}

    如果pName在绑定时不指定id,而是name,那么这个表达式就会输出“胡萝卜“,所以这种写法可以认为是表达式中有一个变量。sessionScope.pName 等价于                           session.getAttribute(“pName”)。

    那么对于interests这个数组属性的值可以使用如下表达式访问:

    ${user.interests[0]}

   

  指定对象的查找范围  

    在书写表达式时,如果没有指定搜索范围,那么系统会依次调用pageContext、request、session、application的getAttribute()方法。这样不限定查找范围的代码不利于排错,

    所以这种取值的操作可以限定对象的查找范围。如:

    ${sessionScope.user.name}

    一旦指定了对象所在的范围,那么只会在范围内查找绑定对象,不会在找不到的时候再去其他区域中查找了。

    sessionScope的位置还可以填写pageScope、requestScope、applicationScope。

  使用EL表达式进行计算

    使用EL表达式可以单独进行运算得出结果并直接输出,如下代码所示,EL进行算术运算,逻辑运算,关系运算,及empty运算。空运算主要用于判断字符串,

    集合是否为空,是空或为null及找不到值时都会输出true。

    ${sessionScope.sampleValue + 12}
       // 显示22

    ${(sessionScope.sampleValue + 12)/3}
       // 显示7.3

    ${(sessionScope.sampleValue + 12) /3==4}
       // 显示 false

    ${(sessionScope.sampleValue + 12) /3>=5}
       // 显示 true

  使用EL表达式获取请求参数值

    ${param.username} 与 request.getParameter(“username”);

    ${paramValues.city} 与request.getParameterValues("city");

 

 JSTL的使用

   如何使用

      将标签库对应的jar包拷贝到WEB-INF/lib目录下,以便于系统可以加载所需要的类。使用taglib指令在页面上引入标签的命名空间和前缀,帮助系统定位对应的类。

       例:  

   if标签的使用

      

        

            User user = new User();

              user.setName("胡萝卜");

                user.setGender("f");

               request.setAttribute("user",user);

          %>

            姓名:${user.name}

           性别:

            

     choose标签的使用

      使用choose标签简化多个if标签的判断。代码如下所示:

        

           User user = new User();

            user.setName("胡萝卜");

            user.setGender("x");

            request.setAttribute("user",user);  

        %>

            性别:

      

           

            

            未知

       

  foreach标签的使用

    使用forEach标签完成对集合的遍历输出。

    其中items属性为要遍历的集合,var属性为每次取出来的一个对象,varStatus指定当前迭代的状态。代码如下:

      

                 

                     

                      

                      

                 

              

                  

                        

                       

                       

                     

               

      

序号 姓名 年龄
${s.count} ${u.name} ${u.age}

 

JSP的使用以及EL和JSTL的使用

标签:for   att   lse   有一个   res   city   数据   其他   conf   

原文地址:https://www.cnblogs.com/xiaoshazi/p/13149578.html


评论


亲,登录后才可以留言!