12 javaweb -jsp基础

8、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目录

我的mac电脑的位置是

/Users/xubainan/Library/Caches/JetBrains/IntelliJIdea2020.3/tomcat/1fde7373-527e-4067-a7e6-d52caf2d6165/work/Catalina/localhost/com_mytest_hello_war/org/apache/jsp

image-20210303120621378

所以JSP文件最终还是转换成java->class文件执行。

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

JSP 本质上就是一个Servlet

jsp的几个方法

//初始化
  public void _jspInit() {
      
  }
//销毁
  public void _jspDestroy() {
  }
//JSPService
  public void _jspService(.HttpServletRequest request,HttpServletResponse response)

内置的一些对象

    final javax.servlet.jsp.PageContext pageContext;  //页面上下文
    javax.servlet.http.HttpSession session = null;		//session
    final javax.servlet.ServletContext application;		//applicationContext
    final javax.servlet.ServletConfig config;					//servlet配置文件
    javax.servlet.jsp.JspWriter out = null;						//writer
    final java.lang.Object page = this;								//this 当前页面

		final javax.servlet.http.HttpServletRequest request			//请求
    final javax.servlet.http.HttpServletResponse response	  //响应
    javax.servlet.jsp.JspWriter _jspx_out = null;		
    javax.servlet.jsp.PageContext _jspx_page_context = null;


在这里插入图片描述

在JSP页面中;

只要是 JAVA代码就会原封不动的输出;

如果是HTML代码,就会被转换为:

out.write("<html>\r\n");

这样的格式,输出到前端!

8.3、JSP基础语法

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

jsp基础阶段的maven依赖

 <dependencies>
    <!--servlet依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
    </dependency>
    <!--jsp依赖-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.2</version>
    </dependency>
    <!--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>
  </dependencies>
JSP表达式
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<body>
<h2>Hello World!</h2>
<% String name ="王大力" ;%>
<%--JSP表达式
作用:用来将程序的输出,输出到客户端
<%= 变量或表达式%>
--%>
<%= new java.util.Date()%>
<br>
<%= name %>
</body>
</html>

jsp脚本片段
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jsp脚本片段</title>
</head>
<body>
<%--jsp脚本片段--%>
<%--打印0-100--%>
<%
    for (int i = 0; i <= 100; i++) {
        out.println(i);
    }
%>
</body>
</html>

脚本片段的再实现

<%--
  Created by IntelliJ IDEA.
  User: xubainan
  Date: 2021/3/3
  Time: 1:30 下午
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jsp片段的再实现</title>
</head>
<body>
<%
    int x = 20;
    out.println(x);
%>
<h2>这是一个jsp文档</h2>
<%
    int y =39;
    out.println(y);
%>

<%--jsp片段的在实现--%>
<% for (int i = 0; i < 6; i++) { %>
<h2>中国万岁 <%=i%> </h2><br>
<% } %>
</body>
</html>

JSP声明-全局变量声明和注释
<%--
  Created by IntelliJ IDEA.
  User: xubainan
  Date: 2021/3/3
  Time: 1:37 下午
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jsp注释</title>
</head>
<body>
<%--jsp的注释,不会出现在客户端的源码中--%>
<!-- html的注释,会出现在客户端的源码中 -->
<%! final double pi =3.14;%>
<%--<%!的声明,会出现在class文件的方法体的声明部分顶端,供全局使用--%>

</body>
</html>


<html>
<head>
    <title>jsp注释</title>
</head>
<body>

<!-- html的注释,会出现在客户端的源码中 -->
</body>
</html>

image-20210303134618629

jsp指令

主页

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jsp指令与引用-include引用</title>
</head>
<body>
<%--引用头部--%>
<%@include file="common/head.jsp"%>



我是jsp页面本身<br>


<%--引用底部--%>
<%@include file="common/footer.jsp"%>

</body>
</html>

头部

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

我是jsp公共头部。。。。。。。<br>

底部

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

我是jsp公共底部<br>

生成的html

<html>
<head>
    <title>我是头部</title>
</head>
<body>
我是jsp公共头部。。。。。。。<br>



<title>jsp指令</title>


我是jsp页面本身<br>




我是jsp公共底部<br>
</body>
</html>

jsp标签

<%--
  Created by IntelliJ IDEA.
  User: xubainan
  Date: 2021/3/3
  Time: 2:01 下午
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--jsp标签拼接,本质还是三个页面,include会将页面合并--%>
<jsp:include page="/common/head.jsp"/>

我是本体<br>
<jsp:include page="/common/footer.jsp"/>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值