javaweb-210406-01

本文深入介绍了JSP技术的基础知识,包括其工作原理、语法特点及九大内置对象的应用。通过实例展示了如何利用JSP动态生成Web页面,适用于初学者了解JSP的基本概念和技术要点。

javaweb - 210406 - 01

  • JSP简介
  • JSP原理
  • JSP基础语法
    • JSP表达式 JSP脚本片段 JSP声明
    • 注释 页面错误 JSP标签 9大内置对象

JSP简介

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

JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其编译器转换成更原始的Servlet代码。JSP编译器可以把JSP文件编译成用Java代码写的Servlet,然后再由Java编译器来编译成能快速执行的二进制机器码,也可以直接编译成二进制码。

JSP原理

原理:
	浏览器向服务器端发送请求,不管访问什么资源,其实都是在访问Servlet!
	JSP最终也会转换成为一个Java类!
	JSP本质上就是一个Servlet!
我的编译路径
	C:\Users\白光一\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat

JSP 基础语法

JSP表达式
在jsp页面中:
	只要是Java代码就会原封不动的输出,,,
	如果是HTML代码,就换被转换成
		out.write("name");
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jspTest01</title>
</head>
<body>
    <%
        String name = "白光一";
    %>
    name:<%=name%>
</body>
</html>


我的编译路径


JSP脚本片段
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jspTest2</title>
</head>
<body>
    <%--
        jsp表达式
        作用:用来将程序输出,输出到客户端
        <%=变量 / 表达式%>
    --%>
    <%=new java.util.Date()%>

    <hr/>

    <%--jsp脚本片段--%>
    <%
        int x = 10;
        out.println(x);
    %>
    <br/><br/>
    <%
        int sum = 0;
        for (int i = 0; i <= 100; i++) {
            sum += i;
        }
        out.println("<h2>sum = " + sum +" </h2>");
    %>

    <hr/>

    <%--在代码中嵌入HTML代码--%>
    <%
        for (int i = 0; i < 3; i++) {
    %>
        <h2>hello,bgy<%=i%></h2>
    <%
        }
    %>

</body>
</html>

JSP声明
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jspTest3</title>
</head>
<body>

    <%!
        static {
            System.out.println("Servle Is Loading!!!");
        }

        public int globalNum = 2021;

        public void test(){
            System.out.println("进入test()方法中!!!!!!!");
        }
    %>

    <%
        out.print(globalNum);
        test();
    %>

</body>
</html>

注释
HTML注释:
	<!---->  网页会显示注释内容

JSP注释:
	<%----%>  网页不会显示注释内容

错误页面
jspTest04.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@page pageEncoding="UTF-8" %>

<%--&lt;%&ndash;定制错误页面&ndash;%&gt;--%>
<%--<%@ page errorPage="error/500.jsp" %>--%>

<%--显示的声明这是一个错误页面--%>
<%@page isErrorPage="true" %>
<html>
<head>
    <title>error500</title>
</head>
<body>
    <%
        int x = 1/0;
        System.out.println(x);
    %>
</body>
</html>
404.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>error404</title>
</head>
<body>
    <img src="/img/error404.jpg" alt=""/>
</body>
</html>
500.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>error500</title>
</head>
<body>
    <img src="/img/error500.jpg"/>
</body>
</html>
web.xml
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <error-page>
    <error-code>500</error-code>
    <location>/error/500.jsp</location>
  </error-page>
  <error-page>
    <error-code>404</error-code>
    <location>/error/404.jsp</location>
  </error-page>
</web-app>

JSP标签
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jspTest05</title>
</head>
<body> 
    <%--   @include会把连个页面合二为一   --%>
    <%@include file="common/header.jsp"%>
    <h2>主体</h2>
    <%@include file="common/footer.jsp"%>
    <br/>
    <hr/>
    <br/>
    <%--
        JSP标签库
        拼接页面,本质上还是三个
    --%>
    <jsp:include page="common/header.jsp"/>
    <h2>主体</h2>
    <jsp:include page="common/footer.jsp"/>

</body>
</html>

9大内置对象
PageContext				存东西
Request					存东西
Response				
Session					存东西
Application				【ServletContext】存东西
config					【ServletConfig】存东西
out
page
exception

		// 保存的数据只在一个页面中有效
        pageContext.setAttribute("name01","bgy01");
        // 保存的数据只在一次请求中有效,请求转发会携带这个数据
        request.setAttribute("name02","bgy02");
        // 保存的数据只在一次会话中有效,从打开浏览器到关闭
        session.setAttribute("name03","bgy03");
        // 保存的数据只在服务器中有效,从打开服务器到关闭
        application.setAttribute("name04","bgy04");
        
        
        // 从pageContext去出,通过find的方式来取出
        // 作用域从低到高
        String name01 = (String) pageContext.findAttribute("name01");
        String name02 = (String) pageContext.findAttribute("name02");
        String name03 = (String) pageContext.findAttribute("name03");
        String name04 = (String) pageContext.findAttribute("name04");
        String name05 = (String) pageContext.findAttribute("name05");

request:
	客户端向服务器发送请求,产生的数据,用户看完了就没用了,比如,新闻。。。
session:
	客户端向服务器发送请求,产生的数据,用户用完了可能还会用,,比如,购物车。。。
application:
	客户端向服务器发送请求,产生的数据,一个用户用完了,可能下个用户还会用,,,
jspTest06.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--必须加上这东西--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>jspTest06</title>
</head>
<body>
    <%--内置对象--%>
    <%
        // 保存的数据只在一个页面中有效
        pageContext.setAttribute("name01","bgy01");
        // 保存的数据只在一次请求中有效,请求转发会携带这个数据
        request.setAttribute("name02","bgy02");
        // 保存的数据只在一次会话中有效,从打开浏览器到关闭
        session.setAttribute("name03","bgy03");
        // 保存的数据只在服务器中有效,从打开服务器到关闭
        application.setAttribute("name04","bgy04");
    %>

    <%--
        脚本中的代码,会原封不动的生成到xxx.jsp.java中
        这里的代码必须保证Java语法正确性
    --%>
    <%
        // 从pageContext去出,通过find的方式来取出
        // 作用域从低到高
        String name01 = (String) pageContext.findAttribute("name01");
        String name02 = (String) pageContext.findAttribute("name02");
        String name03 = (String) pageContext.findAttribute("name03");
        String name04 = (String) pageContext.findAttribute("name04");
        String name05 = (String) pageContext.findAttribute("name05");
    %>

    <%--   使用EL表达式输出 ${}  --%>
    <h3>${name01}</h3>
    <h3>${name02}</h3>
    <h3>${name03}</h3>
    <h3>${name04}</h3>
    <h3>${name05}</h3>
    <hr/>
    <%=name01%>
    <%=name02%>
    <%=name03%>
    <%=name04%>
    <%=name05%>

</body>
</html>

jspTest07.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jspTest07</title>
</head>
<body>
    <%
        // 可以手动把作用域改变,这里把他变成APPLICATION_SCOPE的作用域
        // 就相当于 session.setAttribute("test01","test01");
        pageContext.setAttribute("test01","test01",PageContext.APPLICATION_SCOPE);
    %>

    <%
        pageContext.forward("/index.jsp");
        request.getRequestDispatcher("/index.jsp").forward(request,response);
    %>
</body>
</html>
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值