热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaWEB开发JSP了解及Listener监听器

JSP概述JSP常用脚本JSP常用标签Listener监听器概念JSP全称时JavaServerPages。Java的服务器页面JSP的主要作用主要是替代servlet回传html


JSP概述

JSP常用脚本

JSP常用标签

Listener监听器


概念





  • JSP全称时Java Server Pages。Java的服务器页面


  • JSP的主要作用主要是替代servlet回传html页面数据


  • 因为servlet回传html页面是一件非常繁琐的事情,开发黑盒维护成本极高



jsp文件创建




  • 在web目录下创建一个jsp文件,通过


  • jsp和html一样,都是存放在web目录下,访问和访问html页面一样


  • 访问地址:http:ip/port/工程路径/a.html






  • jsp本质是一个servlet程序


  • 当第一次访问jsp文件时,tomcat服务器会将翻译成为Java源文件,并且进行对它翻译成为字节码文件



jsp头部的page命令




  • jsp头部指令可以修改jsp页面中一些重要属性和行为




jsp常用脚本


//脚本格式
<%! 声明jsp文件 %>


在jsp文件中


这里是jsp请求
<%--声明变量--%>
<%!
private static Map map;
private String name;
%>
<%--声明类的方法--%>
<%!
static {
map = new HashMap<>();
map.put(10, 100);
}
%>
<%--声明类方法--%>
<%!
public int abc() {
return 12;
}
%>
<%--声明内部类--%>
<%!
public static class A {
private Integer id = 10;
}
%>


表达式脚本




  • 作用:在jsp页面上输出数据


  • 特点:


  • 所有表达式脚本都会被翻译到jsp.service()方法中


  • 表达式脚本都会被翻译为put.print()输出到页面上上


  • 由于表达式脚本翻译的内容都在jsp.service()中,所以次方法中的对象可以直接使用


  • 表达式脚本语句不能以分号结束

<%--表达式脚本--%>
<%--输出整型、浮点型、字符串、对象--%>
<%=12%>


代码脚本




  • 在jsp.service()方法中写的语句在代码脚本中都可以书写


  • 特点:


  • 代码脚本翻译后都在jsp.service方法中


  • 因为翻译后在jsp.sercie()方法中,所以jsp.service()中的对象都可以使用


  • 代码脚本还可以由多个脚本块完成一个Java语句


  • 代码脚本可以和表达式脚本一起使用

//格式
<%
java 语句
%>

<%--代码脚本--%>
<%--if-else语句,for循环--%>
<%
int i = 10;
if (i > 10) {
System.out.println("i>10");
} else {
System.out.println("i<=10");
}
%>
<%--代码脚本和表达式脚本组合在一起使用--%>
<%
for (int i = 0; i <10; i++) {
%>
<%=i%>

<%
}
%>


jsp三种注释




  • html注释:此种注释会被翻译到Java源代码中,在jsp.service()方法里,以out.write()输出到客户端


  • java注释:Java注释会被翻译到Java源代码


  • jsp注释:jsp注释可以注释掉jsp中所有代码



jsp九大内置对象




jsp四大域对象





  • 四个域的作用范围可用通过请求转发来确定,一般使用顺序从下到大即从上到下

scope.jsp页面


<%
//往四个域中分别保存数据
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", "application");
%>
pageContext域中是否有值:<%=pageContext.getAttribute("key")%>

request域中是否有值:<%=request.getAttribute("key")%>

session域中是否有值:<%=session.getAttribute("key")%>

application域中是否有值:<%=application.getAttribute("key")%>


<%--请求转发--%>
<%
request.getRequestDispatcher("/scope2.jsp").forward(request,response);
%>


out和response回传给客户端数据的区别




  • 仔细思考




  • response表示响应,通常用于设置返回给客户端的内容


  • out是给使用做输出使用的


  • out.write()输出字符串没有问题


  • out.print()输出所有数据都没有问题


  • 在jsp页面都可以使用print输出

<%
out.write("out输出1
");
out.write("out输出2
");
response.getWriter().write("response输出1
");
response.getWriter().write("response输出1
");
%>

jsp常用标签




静态包含

<%-- <%@ include file=""%> 就是静态包含
file表示要指定的jsp文件路径
地址中的第一个斜杠表示为 http://ip:port/工程路径/ 映射到web目录
静态包含特点:
静态包含不会翻译被包含的jsp文件
静态包含其实是把被包含的jsp页面代码拷贝到包含的位置上执行输出
--%>
<%--<[email&#160;protected] file="/include/footer.jsp"%>--%>


动态包含




  • 页面长划分为头部,主体,尾部


  • 可以将每隔一个部分用一个jsp文件来写


  • 实现原理



头部信息

主体内容

<%--页脚信息
--%>
<%--
动态包含

page属性是指要包含的jsp页面路径
特点:
动态包含会把jsp页面翻译成为Java代码
传递参数
--%>



//在footer.jsp文件中
页脚信息

获取参数:<%=request.getParameter("wzl")%>


请求转发

<%--请求转发--%>


请求转发使用说明



Listener监听器





  • Listener监听器是Java web三大组件之一


  • Java web三大组件:Servlet程序、Filter过滤器、Lisenter监听器


  • Listener是JavaEE的规范即为接口


  • 作用:监听某种事情的变化通过回调函数,反馈给客户(程序)去做一些相应的处理



ServletContextListener监听器




  • 可以监听ServletContext对象的创建和销毁


  • ServletContext对象在web工程启动时调用,在停止时销毁



使用ServletContextListener监听器监听器监听ServletContext对象对象步骤




  • 创建一个类实现ServletContextListener


  • 实现其俩个回调方法


  • 到web.xml中取配置监听器

//创建一个类实现ServletContextListener,实现其俩个回调方法
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyServletContextListenerImpl implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("ServletContext对象被创建了");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("ServletContext对象被销毁了");
}
}
到web.xml中取配置监听器


com.atguigu.listener.MyServletContextListenerImpl


本文地址:https://blog.csdn.net/wangzilong_2019/article/details/107372136



推荐阅读
  • Java Web开发中的JSP:三大指令、九大隐式对象与动作标签详解
    在Java Web开发中,JSP(Java Server Pages)是一种重要的技术,用于构建动态网页。本文详细介绍了JSP的三大指令、九大隐式对象以及动作标签。三大指令包括页面指令、包含指令和标签库指令,它们分别用于设置页面属性、引入其他文件和定义自定义标签。九大隐式对象则涵盖了请求、响应、会话、应用上下文等关键组件,为开发者提供了便捷的操作接口。动作标签则通过预定义的动作来简化页面逻辑,提高开发效率。这些内容对于理解和掌握JSP技术具有重要意义。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 使用cpphttplib构建HTTP服务器以处理带有查询参数的URL请求 ... [详细]
  • 构建高可用性Spark分布式集群:大数据环境下的最佳实践
    在构建高可用性的Spark分布式集群过程中,确保所有节点之间的无密码登录是至关重要的一步。通过在每个节点上生成SSH密钥对(使用 `ssh-keygen -t rsa` 命令并保持默认设置),可以实现这一目标。此外,还需将生成的公钥分发到所有节点的 `~/.ssh/authorized_keys` 文件中,以确保节点间的无缝通信。为了进一步提升集群的稳定性和性能,建议采用负载均衡和故障恢复机制,并定期进行系统监控和维护。 ... [详细]
  • MongoDB高可用架构:深入解析Replica Set机制
    MongoDB的高可用架构主要依赖于其Replica Set机制。Replica Set通过多个mongod节点的协同工作,实现了数据的冗余存储和故障自动切换,确保了系统的高可用性和数据的一致性。本文将深入解析Replica Set的工作原理及其在实际应用中的配置和优化方法,帮助读者更好地理解和实施MongoDB的高可用架构。 ... [详细]
  • 在Python编程中,探讨了并发与并行的概念及其区别。并发指的是系统同时处理多个任务的能力,而并行则指在同一时间点上并行执行多个任务。文章详细解析了阻塞与非阻塞操作、同步与异步编程模型,以及IO多路复用技术的应用。通过模拟socket发送HTTP请求的过程,展示了如何创建连接、发送数据和接收响应,并强调了默认情况下socket的阻塞特性。此外,还介绍了如何利用这些技术优化网络通信性能和提高程序效率。 ... [详细]
  • Node.js 教程第五讲:深入解析 EventEmitter(事件监听与发射机制)
    本文将深入探讨 Node.js 中的 EventEmitter 模块,详细介绍其在事件监听与发射机制中的应用。内容涵盖事件驱动的基本概念、如何在 Node.js 中注册和触发自定义事件,以及 EventEmitter 的核心 API 和使用方法。通过本教程,读者将能够全面理解并熟练运用 EventEmitter 进行高效的事件处理。 ... [详细]
  • 在基于.NET框架的分层架构实践中,为了实现各层之间的松散耦合,本文详细探讨了依赖注入(DI)和控制反转(IoC)容器的设计与实现。通过合理的依赖管理和对象创建,确保了各层之间的单向调用关系,从而提高了系统的可维护性和扩展性。此外,文章还介绍了几种常见的IoC容器实现方式及其应用场景,为开发者提供了实用的参考。 ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • HTTP请求与响应机制:基础概览
    在Web浏览过程中,HTTP协议通过请求和响应报文实现客户端与服务器之间的通信。当用户访问一个网页时,浏览器会发送一个HTTP请求报文至服务器,服务器接收到请求后,会生成并返回一个HTTP响应报文。这两种报文均包含三个主要部分:起始行、头部字段和消息体,确保了数据的有效传输和解析。 ... [详细]
  • SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 本文详细介绍了如何在 Grafana 中独立于 Alertmanager 配置邮件和微信告警。具体步骤包括配置 SMTP 服务器以实现邮件告警,以及设置微信告警的集成方式。通过这些配置,用户可以更灵活地管理和接收来自 Grafana 的告警通知,确保及时响应系统异常。文章还提供了详细的配置示例和常见问题的解决方案,帮助用户顺利完成设置。 ... [详细]
  • 本文详细解析了如何使用 jQuery 实现一个在浏览器地址栏运行的射击游戏。通过源代码分析,展示了关键的 JavaScript 技术和实现方法,并提供了在线演示链接供读者参考。此外,还介绍了如何在 Visual Studio Code 中进行开发和调试,为开发者提供了实用的技巧和建议。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
author-avatar
mobiledu2502861463
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有