8、JSP

8.1、什么是jsp

java servlet Pages :java服务器页面,也和servlet一样,用于动态web技术

最大的特点:

  • 写jsp就像在写html
  • 区别:
    • html只给用户提供静态的数据
    • jsp页面中可以嵌入java代码,为用户提供动态数据

8.2、jsp原理

jsp到底怎么执行的?

  • 代码层面没有问题,还是html代码。
  • 服务器内部工作
    • tomcat中有一个work目录;
    • idea中使用tomcat的会在idea的tomcat中生产一个work目录
  • 在idea的tomcat中变成了.class的java文件

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

jsp最终也会被转换成一个java类

jsp本质上就是一个servlet

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XssQMncu-1625672380861)(/Users/yanxiao/Desktop/截屏2021-07-06 下午6.33.40.png)]

在jsp页面中:

  • 只要是java代码就会原封不动的输出

  • 如果是html代码,就会被转换为

out.write("name:/r/n ")

这样的格式,输出到前端

8.3、jsp基础语法

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

jsp表达式:

<%--jsp表达式
作用:用来将程序的输出,输出到客户端
<%= 变量或者表达式%>
--%>
<%= new Date()%>

jsp片段:

<%--  jsp脚本片段--%>
<%
    int num = 0;
  for (int i = 1; i <= 100; i++) {
    num+=i;
  }
  out.write("<h1>num=" + num+"</h1>");
%>

脚本片段的再实现:

  <%
    int  x = 10;
    out.print(x);
  %>
  <p>这是一个jsp文件文档</p>
  <%
  int y  = 2;
  out.print(y);
  %>


<%--  在代码中嵌入html元素--%>
  <%
    for (int i = 0; i < 5; i++) {
  %>
  <h1>hello world<%=i%></h1>
  <%
    }
  %>

jsp声明:会被编译到jsp生成的java类中,其他的就会被生成到_jspServlet方法中!

在jsp中嵌入java代码即可!

<%%>  片段
<%=%>  表达式
<%!%>  全局(属性或者方法)
<%-- --%>  注释

jsp的注释,不会在客户端显示,html就会!

8.4、jsp指令

<%@page ...%>>
<%@include file="" %>>
<jsp:include page="/"> 这个页面前面要加上/,include则不用

  @include 会将两个页面合二为一;
  jsp:include :拼接页面,本质还是三个 

8.5、九大内置对象

  • pageContext存东西
  • Requst 存东西
  • Response
  • Session 存东西
  • Application [ServletContext] 存东西
  • config [ServletConfig]
  • out
  • page不用连接
  • exception

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XLfDB5XR-1625672380865)(/Users/yanxiao/Desktop/截屏2021-07-07 下午9.24.58.png)]

<%
    pageContext.setAttribute("name1","彩虹1号");//保存的数据只在一个页面中存放
    request.setAttribute("name2","彩虹2号");//保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3","彩虹3号");//保存的数据只在一次会话中有效,从打开服务器到关闭服务器
    application.setAttribute("name4","彩虹4号");//保存的数据只在服务器中有效,从打开服务器到关闭服务器

%>

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

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

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

8.6、jsp标签、jstl标签、EL表达式

<dependency>
    <groupId>javax.servlet.jsp.jstl</groupId>
    <artifactId>jstl-api</artifactId>
    <version>1.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
    <groupId>taglibs</groupId>
    <artifactId>standard</artifactId>
    <version>1.1.2</version>
</dependency>

EL表达式: ${}

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

jsp标签:

<%--<jsp:include page="">    --%>
<%--
  http://localhost:8080/javaweb_jsp_war_exploded/jsptag.jsp
--%>


<jsp:forward page="/jsptage2.jsp">
    <jsp:param name="name" value="caihong"></jsp:param>
    <jsp:param name="age" value="12"></jsp:param>
</jsp:forward>

jstl表达式:

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

核心标签:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mGWCBQne-1625672380866)(/Users/yanxiao/Desktop/截屏2021-07-07 下午11.15.02.png)]

jstl标签使用步骤:

  • 引入对应的taglib
  • 使用其中的方法
  • 在tomcat也需要导入jstl的包,否则会保存,jstl解析错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

期待aaaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值