美文网首页
jsp入门笔记

jsp入门笔记

作者: 61etj | 来源:发表于2018-10-28 00:09 被阅读0次

    JSP动态页面技术

    1. 脚本和注释

      • jsp脚本

          <% java代码 %>
          <%= java变量或表达式 %>
          <%! java代码 %>   
        
      • jsp注释

          html注释:<!--注释内容-->
          java注释: //单行注释   /* 多行注释 */
          <%--注释内容--%>
        
    2. Jsp原理

      1. jsp第一次被访问的时候会被web容器翻译成servlet,在执行。
      2. Jsp翻译后会变成 文件名_jsp.java 此格式,保存在Tomcat根目录下的work文件夹内部
      3. <% java代码 %> 其中Java代码会原封不动放置到 翻译后的 java文件中的 service方法中,因此该java代码中不允许定义方法
      4. <%= java变量或表达式 %> 会翻译为 out.print(java变量或表达式);
      5. <%! java代码 %> 其中Java代码会原封不动放置到 翻译后的 java文件中的 成员位置
      6. 流程:访问服务器-查找work目录是否有对应的翻译后的java-没有则到项目目录下进行翻译
    3. jsp指令(<%@ 指令 %>)

      1. page指令

         <%@ page 属性名1="属性值1" 属性名2="属性值2" ...%>//格式
         //常用属性pageEncoding,contentType,improt,errorPage
         
         //e.g
         <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" session="true" import="java.util.List" errorPage="error.jsp" isErrorPage="true" %>
         
         翻译
         contentType="text/html;charset=UTF-8"  ==> response.setContentType("text/html;charset=UTF-8");//可不写,会跟随pageEncoding格式
         
         pageEncoding="UTF-8" ==> jsp文件的编码
        
         session="true" == > HttpSession session = request.getSession();//是否在Jsp翻译时自动创建session,默认为true,在jsp文件中可以直接使用session对象
        
         import="java.util.List" ==>导包
        
         errorPage="error.jsp" ==>jsp出现错误会自动跳转
        
         isErrorPage="true" ==>说明本页为处理错误页面,申明此属性可以获得错误的异常
        
      2. include指令

        页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中.格式如下

         <%@ include file="被包含的文件地址" %>
        
      3. taglib指令

        在jsp页面引入标签库(jstl,struts2标签库...)格式如下:

         <%@ taglib uri="标签库地址" pretix="前缀" %>
        
    4. 内置对象

      1. javax.servlet.jsp.JspWriter out

        用于页面输出,缓冲区默认8kb,程序执行会将out.print(String str),中的str先写到out的缓冲区,然后缓冲区满了,或者刷新或页面输出了会在将out缓冲区内的数据放入response的缓冲区中。response再提交给tomcat。可以使用如下代码直接将缓冲区内数据写到response中

         <%@ page buffer="0kb" %>
        
      2. javax.servlet.http.HttpServletRequest request

        得到用户请求信息

      3. javax.servlet.http.HttpServletResponse response

        服务器向客户端的回应信息

      4. javax.servlet.ServletConfig config

        服务器配置,可以取得初始化参数

      5. javax.servlet.http.HttpSession session

        用来保存用户的信息

      6. javax.servlet.ServletContext application

        所有用户的共享信息

      7. java.lang.Object page

        指当前页面转换后的Servlet类的实例

      8. javax.servlet.jsp.PageContext pageContext

        JSP的页面容器

         pageContext.setAttribute(String key,String value,int score);//此方法可以向其他域写内容
        
         pageContext.getAttribute(String key,int score);//从指定的域获取数据
        
         pageContext.findAttribute(String key);//自动从所有域(从小打到)中寻找关于key的值
        
      9. java.lang.Throwable exception

        表示JSP页面所发生的异常,在错误页中才起作用

    5. jsp标签

      1. 页面包含(动态包含):<jsp:include page="被包含的页面" />
      2. 请求转发:<jsp:forward page="要转发的资源" />
    1. EL表达式

      主要用于获取域中数据

       pageContext.setAttribute("company", "传智播客");
       
       //存储字符串
       request.setAttribute("company", "黑马程序员");
      
       //存储一个对象
       User user = new User();
       user.setId(1);
       user.setName("zhangsan");
       user.setPassword("123");
       session.setAttribute("user", user);
       
       //存储一个集合
       List<User> list = new ArrayList<User>();
       User user1 = new User();
       user1.setId(2);
       user1.setName("lisi");
       user1.setPassword("123");
       list.add(user1);
       User user2 = new User();
       user2.setId(3);
       user2.setName("wangwu");
       user2.setPassword("123");
       list.add(user2);
       application.setAttribute("list", list);
      
      
       <!-- 使用EL表达式获得域中的值 -->
       ${requestScope.company }
       ${sessionScope.user.name }
       ${applicationScope.list[1].name}
       
       <!-- 使用el表达式 全域查找 -->
       ${company }
       ${user.name }
       ${list[1].name}
       
       <!-- el可以执行表达式运算 -->
       ${1+1 }
       ${1==1?true:false }
       <!-- empty 判定某个对象是否是null  是null返回true -->
       ${empty list}
      
       ${pageContext}//获取web开发中的pageContext,可从该对象获取其他八大对象
      
    2. JSTL

      主要用于jsp页面中使用标签的形式完成业务逻辑功能

      1. 导包jstl.jar以及standard.jar两个包

      2. 引入标签库

         <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
        
      3. 使用

        <c:if>

         <c:if test="${count==10} ">xxx</c:if>
        

        <c:forEach>

         <c:forEachitems="${productList }" var="pro">
         ${pro.name}<br/>
         </c:forEach>
        
         <c:forEachitems="${productMap }" var="entry">
         ${entry.key}==${entry.value}<br/>
         </c:forEach>

    相关文章

      网友评论

          本文标题:jsp入门笔记

          本文链接:https://www.haomeiwen.com/subject/nkcytqtx.html