JSP笔记

jsp的基本内容
1、JSP模版元素
网页的静态内容。如:html标签和文本。
2、JSP的脚本
2.1、小脚本 <% java代码 %>
2.1、表达式 <%= 2+3 %> 等价于out.print(2+3);

2.3、声明 <%! %> 表示在类中定义全局成员,和静态块。
3、JSP注释
JSP注释:<%– 被注释的内容 –%> 特点:安全,省流量
网页注释: 特点:不安全,费流量

4、3指令
5、6动作
6、9内置对象
jsp基本用法说明


<%
            //1:转译成   jsp文件名_jsp.java(Servlet)
            //2:把java文件编译成class文件
            //3:执行class文件               
             Date time =new Date();
             out.print(time.toLocaleString());
           %>

jsp文件也就是一个servlet文件,在编译时期将jsp文件编译为servlet文件。

<%! 
          int num2 = 5;
          public void show()
          {
            System.out.println("hehe");
          }
       %>
    上面是全局的变量<%!  %>带!号
           <%
               int num1 = 5;
               num1++;
               num2++;
               out.println(num1);
               out.println(num2);
            %>
      这里是局部变量
 <%@ include  file="/test2.jsp" %> <!-- 静态包含 -->

   <!--  <jsp:include page="/test2.jsp"></jsp:include> --><!-- 动态包含 --> 

静态包含在编译时期将test2的代码就加载到了test4里。
而动态包含是在执行时期。



JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分。
在JSP 2.0规范中共定义了三个指令:
page指令
Include指令
taglib指令

语法:
<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>
或者:
<%@ 指令名称 属性1=“属性值1%>
<%@ 指令名称 属性2=“属性值2%>

如:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ page language="java" %>
<%@ page import="java.util.*" %>


下面详细看一下每个指令。

1、page:

作用:用于定义JSP页面的各种属性
属性:

1.1import 和java代码中的import是一样的
<%@ page import="java.util.Date,java.util.List"%>
或者:
<%@ page import="java.util.Date"%>
<%@ page import="java.util.List"%>
JSP会自动导入以下的包:
import java.lang.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
1.2、 session: 是否会自动创建session对象。默认值是true;
1.3、 buffer: JSP中有javax.servlet.jsp.JspWriter输出字符流。设置。输出数据的缓存大小,默认是8kb.
1.4 errorPage: 如果页面中有错误,则跳转到指定的资源。
errorPage="/uri" 如果写“/”则代表当前应用的目录下,绝对路径。
如果不写“/”则代表相对路径。
    1.5、 isErrorPage: 是否创建throwable对象。默认是false;
1.6、 contextType: 等同于response.setContextType("text/html;charset=utf-8");
1.7、 pageEncoding: 告诉JSP引擎要翻译的文件使用的编码。
1.8、 isELIgnored: 是否支持EL表达式。 默认是false

<%@ page  pageEncoding="gbk" %>

2、include:

静态包含:把其它资源包含到当前页面中。
<%@ include file="/include/header.jsp" %>
动态包含:
<jsp:include page="/include/header.jsp"></jsp:include>

两者的区别:翻译的时间段不同
前者:在翻译时就把两个文件合并
后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。

原则:能用静的就不用动的。

3、taglib

作用:在JSP页面中导入JSTL标签库。替换jsp中的java代码片段。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

jsp的6个动作

使用标签的形式来表示一段java代码。
如: <jsp:include page="2.jsp"></jsp:include>
<jsp:include > 动态包含
<jsp:forward> 请求转发
<jsp:param> 设置请求参数

<jsp:useBean> 创建一个对象
<jsp:setProperty> 给指定的对象属性赋值
<jsp:getProperty> 取出指定对象的属性值

forward和param用法

test2
     <jsp:forward page="/t3.jsp">
         <jsp:param value="dongdong" name="nolike"/>
         <jsp:param value="xixi" name="like"/>
     </jsp:forward>
test3
       <%=request.getParameter("like") %>
       <%=request.getParameter("nolike") %>

创建对象以及属性操作
标签的功能通代码块功能一样

<%
          Student stu = new Student();
          stu.setName("lisi");
          out.print(stu.getName());
 %>
   <jsp:useBean id="ads" class="com.qianfeng.entity.Address"></jsp:useBean>
       <jsp:setProperty property="city" name="ads" value="beijing"/>
       <jsp:getProperty property="city" name="ads"/>

jsp的9个内置对象

这里写图片描述

pageContext(重要)
1、本身也是一个域对象:它可以操作其它三个域对象(request session application)的数据
void setAttribute(String name,Object o);
Object getAttribute(String name);
void removeAttribute(String name);
操作其它域对象的方法
void setAttribute(String name,Object o,int Scope);
Object getAttribute(String name,int Scope);
void removeAttribute(String name,int Scope);
scpoe的值:
PageContext.PAGE_SCOPE 
PageContext.REQUEST_SCOPE 
PageContext.SESSION_SCOPE 
PageContext.APPLICATION_SCOPE

findAttribute(String name); 自动从page request session application依次查找,找到了就取值,结束查找。


2、它可以创建其它的8个隐式对象
在普通类中可以通过PageContext获取其他JSP隐式对象。自定义标签时就使用。

3、提供了的简易方法
pageContext.forward("2.jsp");
        pageContext.include("2.jsp"); 

代码演示

test4
<!-- pageContext可以操作其它三个域对象,request,session,application -->
    <% 
       //pageContext.setAttribute("like", "page");
       pageContext.setAttribute("like", "page");

       request.setAttribute("like", "request");
       //pageContext.setAttribute("like", "request",PageContext.REQUEST_SCOPE);

       session.setAttribute("like", "session");
       //pageContext.setAttribute("like", "session",PageContext.SESSION_SCOPE);

       application.setAttribute("like", "application");
       //pageContext.setAttribute("like", "application",PageContext.APPLICATION_SCOPE);

       request.getRequestDispatcher("/t5.jsp").forward(request, response);
       //response.sendRedirect(request.getContextPath()+"/t5.jsp");

       //pageContext.forward("/t5.jsp");
       //pageContext.include("/t2.jsp");

    %>
test5
    <%=pageContext.getAttribute("like") %>
    <%=request.getAttribute("like") %>
    <%=session.getAttribute("like") %>
    <%=application.getAttribute("like") %>

    <!-- findAttribute自动从page request session application依次查找 
    -->
    <%=pageContext.findAttribute("like") %>

但是这里获取pageContext的数据是获取不到的,因为page只能在当前页面使用。



PageContext : pageConext 存放的数据在当前页面有效。开发时使用较少。
ServletRequest: request 存放的数据在一次请求(转发)内有效。使用非常多。
HttpSession: session 存放的数据在一次会话中有效。使用的比较多。如:存放用户的登录信息,购物车功能。
ServletContext: application 存放的数据在整个应用范围内都有效。因为范围太大,应尽量少用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值