脚本

脚本可以编写Java语句、变量、方法或表达式。

普通脚本

语法:<% Java代码 %>

<!--普通脚本-->
<%
int b = 456 ; //局部变量
out.println("我在普通脚本里"); //可以直接输出到页面上
System.out.println("哈哈哈哈");//输出到控制台上
%>
  • 经验:普通脚本可以使用所有Java语法,除了定义函数。

注意:

  • 脚本与脚本之间不可嵌套,脚本与HTML标签不可嵌套。

  • 普通脚本里面的变量为局部变量(_jspService方法里面)。

声明脚本

语法:<%! 定义变量、函数%>

<%! int i = 0; %>
<%! int a,b,c; %>
<%! Object object = new Object(); %>
<%!
int a = 123; //全局变量 //定义方法
public void m1(){
System.out.println("Hello World! , 你好!");
}
%>

注意:

  • 声明脚本声明的变量是全局变量(转为生成Servlet的成员变量)。

  • 声明脚本的内容可以在普通脚本<% %>中调用。

  • 如果声明脚本中的函数具有返回值,可以直接使用输出脚本调用<%=方法() %>

输出脚本

语法:<%=Java表达式%>

<%= new java.util.Date()%>

注意:

  • 输出脚本可以输出带有返回值的函数。

  • 输出脚本中不能加;

JSP注释

JSP注释主要有两个作用:为脚本代码作注释以及作为HTML内容注释。

语法规则

语法 描述
<%--注释--%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译
<!--注释--> HTML注释,通过浏览器查看网页源代码时可以看见注释内容

JSP指令

JSP指定用来设置与整个JSP页面相关的属性。

指令 描述
<%@ page ... %> 定义页面的依赖属性,比如脚本语言,error页面,缓存需求等等
<%@ include ... %> 包含其他文件
<%@ taglib ... %> 引入标签库的定义,可以是自定义标签

page指令

  • 语法:<%@ page attribute1="value1" attribute2="value2" %>

  • Page指令为容器提供当前页面的使用说明。一个JSP页面可以包含多个page指令

属性 描述
contentType 指定当前JSP页面的MIME类型和知乎编码格式
errorPage 指定当前JSP页面发生异常时需要转向的错误处理页面
isErrorPage 指定当前页面是否可以作为另一个JSP页面的错误处理页面
import 导入要使用的Java类
language 定义JSP页面所用的脚本语言,默认是Java
session 指定JSP页面是否使用session.默认为true立即创建,false为使用时创建
pageEncoding 指定JSP页面的编码格式
<%@ page contentType="text/html;charset=UTF-8" language="java" session="false" errorPage="error.jsp"  pageEncoding="utf-8" %>
<%@ page import="java.util.Date" %>

include指令

  • 语法:<%@include file="被包含的SP路径" %>

  • 通过incdude指令来包含其他文件。

  • 被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是当前JSP文件的一部分,会被同时编译执行(静态包含)。

<%@ include file="header.jsp">
...
...
<%@ include file="footer.jsp">

注意:有可能会有重名的冲突问题,不建议使用。

taglib指令

  • 语法:<%@ taglib uri="外部标签库路径% prefix="前缀" %>

  • 引入JSP的标准标签库

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

动作标签

  • 语法:<jsp:action_name attribute="value" />

include

  • 语法:<jsp:include page="相对URL地址"/>

  • jsp:include 动作元素会将外部文件输出结果包含在JSP中(动态包含)

<jsp:inculde page="index.jsp"/>

注意:

前面已经介绍过include指令,它是将外部文件的输出代码复制到了当前JSP文件中。而这里的jsp:include动作不同,是将外部文件的输出结果引入到了当前JSP文件中。

useBean

  • 语法:<jsp:useBean id="name" class="package.className">

  • jsp:useBean 动作用来加载一个将在JSP页面中使用的JavaBean。

<jsp:useBean id="user" class="com.zjw.User"/>
  • 在类载入后,我们可以通过jsp:setProperty和jsp:getProperty动作来修改和获取bean的属性。

setProperty

可以在jsp:useBean元素之后使用jsp:setProperty进行属性的赋值

属性 描述
name name属性是必须的。它表示要设置属性的是哪个Bean。
property property属性是必须的。它表示要设置的是哪个属性。
value value属性是可选的。该属性用来指定Bean属性的值。
<jsp:useBean id="user" class="com.zjw.bean.User"/>
<jsp:setProperty name="user" property="age" value="25"/>
<jsp:setProperty name="user" property="name" value="朱俊伟"/>

getProperty

jsp:getProperty动作提取指定Bean属性的值,转成字符串,然后输出

属性 描述
name 要检索的Bean属性名称。Bean必须已定义。
property 表示要提取Bean属性的值。
<jsp:getProperty name="user" property="name"/>
<jsp:getProperty name="user" property="age"/>

forward

  • 语法:<jsp:forward page="相对URL地址"/>

  • jsp:forward动作把请求转到另外的页面。

<jsp:forward page="index.jsp">

param

  • 语法:<jsp:param name="" value=""/>

  • 在转发动作内部使用,做参数传递

<%
request.setCharacterEncoding("UTF-8");
%>
<%--转发--%>
<jsp:forward page="../index.jsp" >
<jsp:param name="name" value="朱俊伟"/>
</jsp:forward>
<%=request.getParameter("name")%>

内置对象

由JSP自动创建的对象,可以直接使用

对象名 类型 说明
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpServletResponse
session javax.servlet.http.HttpSession 由session="true"开关
application javax.servlet.http.ServletContext
config javax.servlet.http.ServletConfig
exception javax.lang.Throwable 由isErrorPage="false"开关
out javax.servlet.jsp.JspWriter javax.servlet.jsp.JspWriter
pageContext javax.servlet.jsp.PageContext
page javax.lang.Object当前对象的this 当前servlet实例

四大域对象

JSP有四大作用域对象,存储数据和获取数据的方式一样,不同的是取值的范围有差别

  • pageContext(javax.servlet.jsp.PageContext)当前JSP页面范围

  • request(javax.servlet.http.HttpServletRequest)一次请求有效

  • session (javax.servlet.http.HttpSession) 一次会话有效(关闭浏览器失效)

  • application(javax.servlet.ServletContext)整个Web应用有效(服务器重启或关闭失效)

package com.zjw.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; @WebServlet("/scope")
public class Scope extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("request","request值");
req.getSession().setAttribute("session","session值");
req.getServletContext().setAttribute("application","servletContext值");
System.out.println("servlet....");
resp.sendRedirect(req.getContextPath()+"/scope/scope.jsp");
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
pageContext.setAttribute("pageContext","pageContext值");
%>
<%=pageContext.getAttribute("pageContext")%><br>
<%=request.getAttribute("req")%><br>
<%=session.getAttribute("session")%><br>
<%=application.getAttribute("application")%><br>
</body>
</html>

JSP (二) -- JSP与HTML集成开发的更多相关文章

  1. JavaWeb学习之JSP(二) JSP标签

    JSP常用标签 什么是JSP标签 JSP标签,有的地方也叫做JSP动作,在JSP中编写大量的java代码会使JSP页面显得杂乱无章,看起来非常不舒服,因此JSP提供了一些类似html的标签,通过这些标 ...

  2. 【转】windows和linux中搭建python集成开发环境IDE

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

  3. windows和linux在建筑python集成开发环境IDE

    http://blog.csdn.net/pipisorry/article/details/39854707 使用的系统及软件 Ubuntu / windows Python 2.7 / pytho ...

  4. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  5. JSP(二)

    一.pageContext对象    1>代表当前JSP页面的运行环境, [作用域仅仅局限于当前JSP页面中,出了该JSP页面, 原PageContext域对象被销毁]    2>封装了对 ...

  6. 文献综述三:基于JSP的商品信息管理系统设计与开发

    一.基本信息 标题:基于JSP的商品信息管理系统设计与开发 时间:2015 出版源:Computer Knowledge and Technology 文件分类:jsp技术的系统开发 二.研究背景 通 ...

  7. Android开发学习总结(二)——使用Android Studio搭建Android集成开发环境

    有很长一段时间没有更新博客了,最近实在是太忙了,没有时间去总结,现在终于可以有时间去总结一些Android上面的东西了,很久以前写过这篇关于使用Android Studio搭建Android集成开发环 ...

  8. 咸鱼入门到放弃7--jsp<二>jsp常用标签

    一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...

  9. jsp二(指令)

    一.jsp动作标签: 1)<jsp:forward> 请求转发 相当于之前的request.getRequestDispatcher(..).forward(..); <!--jsp ...

  10. 实验二 JSP基本动态元素的使用

    实验二  JSP基本动态元素的使用 实验性质:验证性          实验学时:  2学时      实验地点: 一 .实验目的与要求 1.掌握JSP中声明变量.定义方法.java程序片及表达式的使 ...

随机推荐

  1. deepseek-v3 论文阅读

    模型结构 MLA(Multi-Head Latent Attention) 主要作用是在保证效果的基础上, 利用低秩压缩的原理优化kvCache, 加速推理, 同时节省训练显存. 先回忆下MHA, 在 ...

  2. 使用crewai创建属于你自己的AI团队

    crewai介绍 CrewAI 是一个用于协调自主 AI 代理的前沿框架. CrewAI 允许你创建 AI 团队,其中每个代理都有特定的角色.工具和目标,协同工作以完成复杂任务. 把它想象成组建你的梦 ...

  3. IIS反向代理和URL重写——实现https重定向,文件类型隐藏访问重写,nodejs等服务重写等等

    一.Why? 1.先来讲一讲为什么我们要使用url重写这个东西 2.因为我学习的后端是nodejs,然后我发现nodejs一个非常让人难受的事,就是它监听端口不是80和443时,你访问网页需要输入端口 ...

  4. intellij debug模式提示 Method breakpoints may dramatically slow down debugging 解决办法

    直接上图........ 点击图中按钮  或者 快捷键(Ctrl - Shift -F8 ) 出现下图  

  5. MybatisPlus - [05] 逻辑删除

    题记部分 一.物理删除&逻辑删除 物理删除:delete from table_name where xxx = ?; 逻辑删除:update table_name set deleted = ...

  6. 有关算法与数据结构的考题解答参考汇总 [C++] [链表] · 第三篇

    早先年考研的主考科目正是[算法与数据结构],复习得还算可以.也在当时[百度知道]上回答了许多相关问题,现把他们一起汇总整理一下,供读者参考. [1] 原题目地址:https://zhidao.baid ...

  7. go、thinkphp8、webman数据读取并发测试、性能测试

    前期准备:本地搭建程序运行所需环境,分别编写go,thinkphp8和webman程序,确保程序运行正常,新建mysql的student表,模拟存储学生信息,共计3646条数据,分别使用go语言.th ...

  8. Manus,没有秘密「注解版」

    近来Manus走红,「争论」不断,我也在前文<Manus爆火,是硬核还是营销?>中阐述过自Manus发布后,行业讨论以及开源复刻的信息,以及我们如何结合蚂蚁图计算(TuGraph)技术,实 ...

  9. How to use the Ubuntu

    How to use the Ubuntu Introduction ‍ As far as I have noted, I will force myself to write all my blo ...

  10. mysql frm、MYD、MYI数据文件恢复,导入MySQL中

    前言 .frm..MYI..MYD 文件分别是 MySQL 的 MyISAM存储引擎存储的表结构.索引.数据文件. 简单方法恢复数据 .frm..MYI..MYD文件如果直接以文本打开,全部会以二进制 ...