JSP学习

8.1、什么是JSP

Java Server Pages :Java服务器端页面,也和Servlet一样,用于动态Web技术!

最大的特点:

  • 写JSP就想在写HTML
  • 区别:
    • HTML只给用户提供静态的数据
    • JSP页面中可以嵌入JAVA代码,为用户提供动态数据
8.2、JSP原理

思路:JSP到底怎么执行的

  • 代码层面没有任何问题

  • 服务器内部工作

    tomcat中有一个work目录

    IDEA中使用tomcat的会在IDEA的tomcat中生产一个work目录

浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!

JSP最终也会被转换为一个JAVA类

JSP本质上就是一个Servlet(相当于一个继承了HttpServlet的实现类,里面把对象都实例化了一遍)

只不过是简化了一些东西,只需要写页面部分就可以了

在JSP页面中,只要是JAVA代码就会原封不动的输出;

如果是HTML 代码,就会被转换成**out.write()**这样的格式,输出到前端

8.3、JSP基础语法

任何语言都有自己的语法,JAVA中有自己的语法。JSP作为java技术的一种应用,他拥有一些自己扩充的语法(了解即可),java所有语法他都支持

JSP表达式
<%--
  JSP表达式
  作用:用来将程序的输出,输出到客户端
  <%= 变量或者表达式%>
  --%>
  <%= new java.util.Date()%>
jsp脚本片段
<%--  JSP脚本片段--%>
  <%
  int sum = 0;
    for (int i = 1; i <100; i++) {
      sum+=i;
    }
    out.println("<h1>Sum="+sum+"</h1>");
  %>
脚本片段的再实现
<%
int x = 10;
out.println(x);
%>
  <p>这是jsp文档</p>
  <%
int y = 30;
out.println(y);
%>


<%--  在代码嵌入HTML元素--%>
<%
  for (int i = 0; i < 6; i++) {

  %>
  <h1>sssssss <%=i%></h1>

<%
  }
%>
JSP声明
<%!
static {
  System.out.println("Loading Servlet");
}

private  int globalVar = 0;

public  void kuang(){
  System.out.println("进入了方法");
}
%>

JSP声明:会被编译到JSP生产Java的类中!其他的(表达式,脚本片段。)就会被生成到jspService方法中。

在JSP中,嵌入java代码即可。

<%%>
<%=%>
<%!%>

<%--注释--%>

JSP的注释,不会在客户端显示,HTML就会!

8.4、JSP指令
<%@ page ... %>
<%@ include file="" %>

<%--jsp标签
    jsp:include:拼接页面
--%>
<jsp:include page="jsp2.jsp"/>

扩展:定制错误页面

<error-page>
    <error-code>404</error-code>
    <location>/error/404.jsp</location>
</error-page>
<error-page>
    <error-code>500</error-code>
    <location>/error/500.jsp</location>
</error-page>
8.5、九大内置对象
  • PageContext 存东西
  • Request 存东西
  • Response
  • Session 存东西
  • Application [ServletContext] 存东西
  • config [ServletConfig]
  • out
  • page
  • exception

作用域(低到高):page–>request–>session–>apllication

pageContext.setAttribute("name1","jjjj");//保存的数据只在一个页面中有效
request.setAttribute("name2","jjjjss");//保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","jjjjfff");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute("name4","jjjjsds");//保存的数据在服务器有效,从打开服务器到关闭服务器

request: 客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的

session:客户端向服务器发送请求,产生的数据,用户看完一会还要用,比如:购物车

application:客户端向服务器发送请求,产生的数据,一个用户用完了,其他用户还可能使用,比如:聊天记录数据;

8.6、JSP标签、JSTL标签、EL表达式
<!--        JSTL表达式的依赖-->
<dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
</dependency>
<!--        standard标签库-->
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

EL表达式: ${}

  • 获取数据
  • 执行运算
  • 获取web开发的常用对象

JSP标签

<%--相当于
http://localhost:8080/jsptag.jsp?name=xu&age=1
--%>
<jsp:forward page="jsptag2.jsp">
    <jsp:param name="name" value="xu"/>
    <jsp:param name="age" value="1"/>    
</jsp:forward>

取出数据:

<%=request.getParameter("name")%>
<%=request.getParameter("age")%>

JSTL表达式

JSTL标签库的使用就是为了弥补HTML标签的不足;他自定义许多标签,可以供我们使用,标签的功能和Java代码一样!

格式化标签

SQL标签

XML标签

核心标签(掌握部分)

在这里插入图片描述

JSTL标签库使用步骤

  • 引入对应的taglib
  • 使用其中的方法
  • 在Tomcat也需要引入jstl的包,否则就会报错:JSTL解析错误

详细用法,用的时候去网上查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值