Java WEB开发JSP了解及Listener监听器
程序员文章站
2022-07-10 18:29:34
####什么时JSP概念JSP全称时Java Server Pages。Java的服务器页面JSP的主要作用主要是替代servlet回传html页面数据因为servlet回传html页面是一件非常繁琐的事情,开发黑盒维护成本极高jsp文件创建在web目录下创建一个jsp文件,通过jsp和html一样,都是存放在web目录下,访问和访问html页面一样访问地址:http:ip/port/工程路径/a.htmljsp本质是一个servlet程序当第一次访问jsp文件时,tomca...
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文件中
<body>
这里是jsp请求
<%--声明变量--%>
<%!
private static Map<Integer, Integer> 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;
}
%>
</body>
表达式脚本
- 作用:在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%><br>
<%
}
%>
jsp三种注释
- html注释:此种注释会被翻译到Java源代码中,在jsp.service()方法里,以out.write()输出到客户端
- java注释:Java注释会被翻译到Java源代码
- jsp注释:jsp注释可以注释掉jsp中所有代码
jsp九大内置对象
jsp四大域对象
- 四个域的作用范围可用通过请求转发来确定,一般使用顺序从下到大即从上到下
<h1>scope.jsp页面</h1>
<%
//往四个域中分别保存数据
pageContext.setAttribute("key", "pageContext");
request.setAttribute("key", "request");
session.setAttribute("key", "session");
application.setAttribute("key", "application");
%>
pageContext域中是否有值:<%=pageContext.getAttribute("key")%> <br>
request域中是否有值:<%=request.getAttribute("key")%> <br>
session域中是否有值:<%=session.getAttribute("key")%> <br>
application域中是否有值:<%=application.getAttribute("key")%> <br>
<%--请求转发--%>
<%
request.getRequestDispatcher("/scope2.jsp").forward(request,response);
%>
out和response回传给客户端数据的区别
- 仔细思考
- response表示响应,通常用于设置返回给客户端的内容
- out是给使用做输出使用的
- out.write()输出字符串没有问题
- out.print()输出所有数据都没有问题
- 在jsp页面都可以使用print输出
<%
out.write("out输出1<br>");
out.write("out输出2<br>");
response.getWriter().write("response输出1<br>");
response.getWriter().write("response输出1<br>");
%>
jsp常用标签
静态包含
<%-- <%@ include file=""%> 就是静态包含
file表示要指定的jsp文件路径
地址中的第一个斜杠表示为 http://ip:port/工程路径/ 映射到web目录
静态包含特点:
静态包含不会翻译被包含的jsp文件
静态包含其实是把被包含的jsp页面代码拷贝到包含的位置上执行输出
--%>
<%--<%@include file="/include/footer.jsp"%>--%>
动态包含
- 页面长划分为头部,主体,尾部
- 可以将每隔一个部分用一个jsp文件来写
-
实现原理
头部信息<br>
主体内容<br>
<%--页脚信息<br>--%>
<%--
动态包含
<jsp:include page=""></jsp:include>
page属性是指要包含的jsp页面路径
特点:
动态包含会把jsp页面翻译成为Java代码
传递参数
--%>
<jsp:include page="/include/footer.jsp">
<jsp:param name="wzl" value="123"/>
</jsp:include>
//在footer.jsp文件中
页脚信息<br>
获取参数:<%=request.getParameter("wzl")%>
请求转发
<%--请求转发--%>
<jsp:forward page="/a.jsp"></jsp:forward>
请求转发使用说明
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中取配置监听器
<!--配置监听器-->
<listener>
<listener-class>com.atguigu.listener.MyServletContextListenerImpl</listener-class>
</listener>
本文地址:https://blog.csdn.net/wangzilong_2019/article/details/107372136