6. JSP详解

1. 什么是JSP

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

  • JSP中的内容就是html,但是能够嵌套java语言
  • HTML只给用户提供静态数据

2. JSP原理

  • 服务器内部工作
    tomcat中有一个work目录
    IDEA中使用Tomcat的会在IDEA的tomcat中生产一个work目录
    浏览器向服务器发送请求,不管访问什么资源,都是在访问Servlet
    JSP最后也会被转化为一个Java类
    JSP本质上就是一个Servlet
// 初始化
public void _jspInit(){
}
// 销毁
public void _jspDestroy(){
}
// JSPService
public void _jspService(.HttpServletRequest request,HttpServletResponse response){
}
  • 判断请求
  • 内置一些对象

3. JSP基础语法

JSP拥有一些扩充的语法
JSP表达式

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

** JSP脚本片段**

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

4. JSP声明

<%!
    static {
        system.out.println("Loading Servlet!");
    }
    private int globalvar = 0;
    public void kuang){
        system.out.printlnC"进入了方法!");
    }
%>

JSP声明:会被编译到SP生成Java的类中!其他的,就会被生成到_jspService方法中!
在SP,嵌入Java代码即可!
JSP的注释,不会在客户端显示,HTML会显示

5.JSP指令

%@page args.... %>
‹%@include file=""%›

    <%--@include会将两个页面合二次一--%>

    ‹%@include file="common/header. jsp"%>
    <h1>网页主题</h1>

    ‹%@include file="common/footer. jsp"%>

    <hr>

    <%--jSP标签
    jsp:include: 拼接页面,本质还是三个
    --%>
    ‹jsp: include page="/common/header. jsp"/>
    <h1>网页主体</h1>
    ‹jsp: include page="/common/footer.jsp"/>

6. 九大内置对象

   page:page对象代表当前JSP页面,是当前JSP编译后的Servlet类的对象。相当于this。
   config:标识Servlet配置,类型:ServletConfig,api跟Servlet中的ServletConfig对象是一样的,能获取该servlet的一些配置信息,能够获取ServletContex
   application:标识web应用上下文,类型:ServletContext,详情就看Servlet中的ServletContext的使用
   request:请求对象,  类型:httpServletRequest
   response:响应对象  类型:httpServletResponse
   session:表示一次会话,在服务器端记录用户状信息的技术
   out:输出响应体 类型:JspWriter
   exception 表示发生异常对象,类型 Throwable,在上面我们介绍page指令中的一个errorPage属性时就有说到他
   pageContext:表示 jsp页面上下文(jsp管理者) 类型:PageContext
   标记了加粗的对象就是JSP独有的,其他的都是Servlet中的老东西。

<%--内置对象--%>
<%
    pagecontext.setAttribute(s: "name1", o: "ha");//保存的数据只在一个页面中有效
    request.setAttribute("name2", "shi"); //保存的数据只在一次请求中有效,请求转发会携带这个数据
    session.setAttribute("name3","fei"); //保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
    application.setAttribute(“name4","秦疆4号");//保存的数据只服务器中有效,从打开服务器到关闭服务器
%>
<%--脚本片段中的代码,会被原封不动生成到.JsP.java
要求:这里面的代码:必须保证Java语法的正确性
--%>
<%
    //MpageContext取出,我们通过寻找的方式来
    //从底层到高层(作用城):
    String name1 = (String) pageContext. findAttribute ("name1");
    String name2 = (String) pageContext. findAttribute ("name2");
    String name3 = (String) pageContext. findAttribute ("name3");
    String name4 = (String) pageContext. findAttribute("name4");
    String name5 =(String) pagecontext.findAttribute( "name5");//不存在
%>
<%--使用EL表达式输出 $f}--%>
    <h1>取出的值为:</h1>
    <h3>${name1}</h3>
    <h3>${name2}</h3>
    <h3>${name3}</h3>
    <h3>${name4}</h3>
    <h3 > <%=name5%> </h3>
</body>
</html>

7.JSP的四大作用域:page、request、session、application

    这四大作用域,其实就是其九大内置对象中的四个,为什么说他们也是JSP的四大作用域呢?因为这四个对象都能存储数据,比如request.setAttribute()注意和request.setParameter()区分开来,一个是存储在域中的、一个是请求参数,session.setAttribute()、application其实就是SerlvetContext,自然也有setAttribute()方法。而page作用域的操作就需要依靠pageContext对象来进行了。在上面我们也有提到JSP的四大作用域,
    page作用域:代表变量只能在当前页面上生效
    request:代表变量能在一次请求中生效,一次请求可能包含一个页面,也可能包含多个页面,比如页面A请求转发到页面B
    session:代表变量能在一次会话中生效,基本上就是能在web项目下都有效,session的使用也跟cookie有很大的关系。一般来说,只要浏览器不关闭,cookie就会一直生效,cookie生效,session的使用就不会受到影响。
    application:代表变量能一个应用下(多个会话),在服务器下的多个项目之间都能够使用。比如baidu、wenku等共享帐号。

8.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标签#

jsptag

<html>
<head>
    <title>Title</title>
</head>
<body>

<%-- jsp:include--%>

<jsp:forward page="/jsptag2.jsp">
    <jsp:param name="name" value="fei"/>
    <jsp:param name="age" value="23"/>
</jsp:forward>


</body>
</html>

jsptag2

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>jsp-tag2</h1>

<%--取出参数--%>
<%=request.getParameter("name")%>
<%=request.getParameter("age")%>

</body>
</html>

JSTL标签库#

JSTL标签库的使用就是为了弥补HTML标签的不足;它自定义许多标签,可以供我们使用,标签的功能和Java代码一样!
核心标签(掌握部分)
核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

格式化标签
SQL标签
XML标签

9.JavaBean

实体类
JavaBean有特定的写法:
* 必须要有一个无参构造
* 属性必须私有化
* 必须有对应的get/set方法
一般涌来和数据库的字段做映射 ORM
ORM:对象关系映射
* 表-->类
* 字段-->属性
* 行记录-->对象

作者:hashifei

出处:https://www.cnblogs.com/hashifei/p/18141183

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   哈士费  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示