jsp入门笔记

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. 页面包含(动态包含):
    2. 请求转发:
  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 list = new ArrayList();
     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);
    
    
     
     ${requestScope.company }
     ${sessionScope.user.name }
     ${applicationScope.list[1].name}
     
     
     ${company }
     ${user.name }
     ${list[1].name}
     
     
     ${1+1 }
     ${1==1?true:false }
     
     ${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. 使用

       xxx
      

       
       ${pro.name}
      ${entry.key}==${entry.value}

你可能感兴趣的:(jsp入门笔记)