JSP的基本使用总结

JSP的基本使用总结JSP 的使用本文适合初学者学习 JSP 时参考 包括代码演示 相信初学者看完一定有所收获 本文可以学习到 JSP 最重要也是必须掌握的部分还可以看看博主的其他文章 都很适合初学者 MySQL 的时使用 看这篇就够了 传送地址 MySQL 必知必会 Servlet 服务器必知必会 传送地址 初学 Servlet 服务器 看这篇就够了总结不易 收藏点赞哦 持续更新 Java 后端总结 文章目录 JSP 的使用一 JSP 的介绍与创建二 JSP 的本质三 JSP 的语法四 JSP 中的常用脚本 1 声明脚本 2 表达式脚本 3

JSP的使用

还可以看看博主的其他文章:

MySQL的时使用,看这篇就够了,传送地址:MySQL必知必会
Servlet服务器必知必会,传送地址:初学Servlet服务器,看这篇就够了

一、JSP的介绍与创建

  1. JSP的全称是Java Server Pages,即Java的服务器页面
  2. JSP的主要作用是代替Servlet程序回传HTML页面的数据
  3. web目录(或其他)右击 –> new –> JSP/JSPX –> 输入文件名 –> 选择JSP file创建

二、JSP的本质

三、JSP的语法

注意:以上默认值除非有特殊需要,否则不建议修改

四、JSP中的常用脚本

1. 声明脚本

代码演示:声明脚本的使用(此JSP文件在web目录下,名为First.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<html> <head> <title>Title 
     title>  
      head> <body> <%--1.声明类属性--%> <%! private String name; private static Map<String, Object> map; %> <%--2.声明类方法--%> <%! public int sum() { return 12; } %> <%--3.声明静态代码块--%> <%! static { map = new HashMap<String, Object>(); map.put("key1", "value1"); } %>  
       body>  
        html> 

2. 表达式脚本

代码演示:表达式脚本的使用(此JSP文件在web目录下,名为First.jsp)

<%=22 %> <br/> <%="可以输出字符串" %> <br/> <%=map %> <br/> <%--使用_jspService方法中的对象--%> <%=request.getParameter("username") %> 
  1. write方法中的标签、转义字符自动识别为对应的
    功能,不在页面输出,执行各自代表的功能

  2. out的两个方法也在_jspService方法中,也都是java语言
  3. 只有print、write方法、表达式脚本中的内容才可在浏览器中显示,其余Java代码的sout在控制台输出

3. 代码脚本

代码演示:代码脚本的使用(此JSP文件在web目录下,名为First.jsp)

<%--1.if语句--%> <% int i = 1; if (i == 1) { System.out.println("我爱祖国!"); } else { System.out.println("我很爱祖国!"); } %> <br/> <%--2.for循环语句--%> <% for (int j = 0 ; j < 3; j++) { System.out.println("第" + j + "次循环"); } %> <br/> <%--3.使用_jspService方法参数中的对象--%> <% String username = request.getParameter("username"); System.out.println("username对应的值为:" + username); %> 

五、JSP三种注释

  1. HTML注释:

    HTML注释会被翻译到JSP文件对应的Java类的_jspService方法中,以out.write()输出到客户端,
    write方法会自动识别标签,执行标签对应的功能,不会在浏览器的页面上输出注释




  2. Java注释:(1) //单行注释 (2) /*多行注释*/
    Java注释要写在声明脚本和代码脚本中才被认为是Java注释,会被翻译到JSP文件对应的Java类的_jspService方法中,在对应的Java类中也是注释

  3. JSP注释:<%- -这是JSP注释- -%>
    JSP注释中的内容不会在JSP文件翻译后的Java类中出现,即注释中的内容没有任何功能

六、JSP九大内置对象

七、JSP四大域对象

在这里插入图片描述
域对象是指可以像Map一样存取数据的对象,四个域对象功能一样,只是对数据的存取范围不同

代码演示1:四个域对象存取数据的范围的不同(在web目录下创建scope1.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html> <head> <title>scope1 
     title>  
      head> <body> <h1>scope1.jsp页面 
       h1> <% //向四个域对象中分别保存数据 pageContext.setAttribute("key", "pageContext"); request.setAttribute("key", "request"); session.setAttribute("key", "session"); application.setAttribute("key", "application"); %> <%-- <jsp:forward page=""> 
        jsp:forward>是请求转发标签, page属性设置请求转发的路径 --%> <jsp:forward page="/scope2.jsp"> 
         jsp:forward>  
          body> 

代码演示2:在web目录下创建scope2.jsp

<head> <title>Title 
     title>  
      head> <body> <h1>scope2.jsp页面 
       h1> <%-- JSP页面中不加任何标签直接输入的内容被write方法输出在浏览器的页面上 --%> pageContext域是否有值:<%=pageContext.getAttribute("key")%> <br> request域是否有值:<%=request.getAttribute("key")%> <br> session域是否有值:<%=session.getAttribute("key")%> <br> application域是否有值:<%=application.getAttribute("key")%> <br>  
        body> 

八、JSP的out输出和response.getWriter输出的异同

  1. 相同点:response表示响应,用于给客户端(浏览器)返回内容
    out同样也是用于给客户端(浏览器)输出内容

  2. 不同点:
    在这里插入图片描述

  3. 注意:由于官方的代码中翻译后的Java代码底层都是使用out进行输出,故一般都使用out进行 输出,out又分为write方法和print方法:
    (1) out.print():会将任何内容转换成字符串后调用write方法输出
    (2) out.write():输出字符串没有问题,但输出int型时会将int转换成char输出,导致输出的并非是想要的数字而是数字对应的ASCII码
    结论:JSP页面的代码脚本中任何要输出在浏览器的内容均使用out.print()方法






九、JSP的常用标签

1. 静态包含

代码演示1:在web目录下创建body.jsp

<body> 头部信息 <br> 主体信息 <br> <%@include file="/foot.jsp"%>  
     body> 

代码演示2:在web目录下创建foot.jsp

<body> 页脚信息 <br>  
     body> 

2. 动态包含

代码演示1:在web目录下创建body.jsp

<body> 头部信息 <br> 主体信息 <br> <jsp:include page="/foot.jsp"> <jsp:param name="username" value="Jaychou"/> <jsp:param name="password" value="root"/>  
     jsp:include>  
      body> 

注意:

  1. 设置参数的标签要写在动态包含之中
  2. 出现Expecting “jsp:param” standard action with “name” and “value” attributes异常,两个原因:
    ①动态包含中未设置参数但没有把
    放在一行上
    ②动态包含中加了注释
    代码演示2:在web目录下创建foot.jsp






<body> 页脚信息 <br> <%=request.getParameter("username")%>       body> 

十、ServletContextListener监听器

1. Listener监听器的介绍

2. ServletContextListener监听器

ServletContextListener监听器可以监听ServletContext对象的创建和销毁(web工程启动时创建,停止时销毁),监听到创建和销毁之后都会调用ServletContextListener监听器的方法进行反馈:

public interface ServletContextListener extends EventListener { 
    //在ServletContext对象创建之后调用 public void contextInitialized(ServletContextEvent sce); //在ServletContext对象销毁之后调用 public void contextDestroyed(ServletContextEvent sce); } 

3. ServletContextListener监听器的使用步骤

代码演示1:创建一个类

public class ListenerTest implements ServletContextListener { 
    @Override public void contextInitialized(ServletContextEvent servletContextEvent) { 
    System.out.println("ServletContext对象创建"); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { 
    System.out.println("ServletContext对象销毁"); } } 

代码演示2:在web.xml中配置

<listener>  
    <listener-class>com.qizegao.servlet.ListenerTest 
     listener-class>  
      listener> 

注意:

  1. 查看翻译后的Java源文件的方法:启动Tomcat服务器访问到JSP页面之后在控制台输出的信息的前端找到Using CATALINA_BASE中的路径,在硬盘中打开此目录,点击work –> Catalina –> localhost,找到对应的工程文件夹寻找即可
  2. 访问JSP页面其实是在执行对应的翻译后的Java代码的_jspService方法:翻译后的Java类中没有service方法,而是重写了父类的_jspService方法,这个方法会被父类的service方法调用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/198960.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:09
下一篇 2026年3月26日 下午2:09


相关推荐

  • ubuntu安装python pip_anaconda pipenv

    ubuntu安装python pip_anaconda pipenv简单介绍在Ubuntu上安装Python的virtualenv前提:本机安装了Linux系统(这里推荐用Ubuntu安装,或是CentOS)(Ubuntu的安装比较简单,推荐用VirtualBox,可以去Oracle官网下载VirtualBox(https://www.virtualbox.org/),然后去Ubuntu官网(https://www.ubuntu.com/download)…

    2022年8月26日
    6
  • 用针式打印机打印快递单子代替手写

    用针式打印机打印快递单子代替手写现代企业中会常常需要快递信件 文件 物品等等业务 那么这里就涉及到快递单子的填写 在填写快递单子的时候可能由于疏忽等等因素会出现以下几种情况的错误和缺点 1 字迹可能不工整 导致快递人员不能很清晰的辨认 2 填写错误 导致不能及时的快递到客户 3 手写影响效率改为机打以后的优点 1 字迹清晰工整 2 地址错误的概率有效降低 3 快递单子的填写效

    2026年3月17日
    2
  • goland的破解激活码都提示非法破解方法「建议收藏」

    goland的破解激活码都提示非法破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    67
  • Absolute(绝对定位)与relative(相对定位)的图文讲解

    Absolute(绝对定位)与relative(相对定位)的图文讲解Position 的属性值有 1 nbsp nbsp nbsp nbsp nbsp Absolute 绝对定位 是相对于最近的且不是 static 定位的父元素来定位 2 nbsp nbsp nbsp nbsp nbsp Fixed 绝对定位 是相对于浏览器窗口来定位的 是固定的 不会跟屏幕一起滚动 3 nbsp nbsp nbsp nbsp nbsp Relative 相对定位 是相对于其原本的位置来定位的 4 nbsp nbsp nbsp nbsp nbsp Static 默认值 没有定位 5 nbsp nbsp nbsp nbsp nbsp Inherit 继承父元素的 position 值 对于初

    2026年3月18日
    1
  • 快速排序法(详解)

    快速排序法(详解)假设对以下 10 个数进行快速排序 6 1 2 7 9 3 4 5 10 8 我们先模拟快速排序的过程 首先 在这个序列中随便找一个数作为基准数 通常为了方便 以第一个数作为基准数 6 1 2 7 9 3 4 5 10 8 在初始状态下 数字 6 在序列的第 1 位 我们的目标是将 6 挪到序列中间的某个位

    2026年3月18日
    2
  • python更新pip失败_findwindow函数

    python更新pip失败_findwindow函数我使用pywin32扩展来解决FindWindow问题.简单的C代码:intmain(){HWNDh=FindWindow(NULL,TEXT(“SomeApp”));if(h!=INVALID_HANDLE_VALUE)SetForegroundWindow(h);return0;}效果很好.与python相同:importwin32guih=win32gui.FindW…

    2022年8月13日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号