jsp全称JavaServer Pages,是一种动态网页技术,JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。jsp文件在最后会会转变为servlet代码。
IDEA tomcat的工作空间
我们发现jsp页面转变成立java
浏览器向服务器发送请求,其实就是在访问servlet
//初始化 public void _jspInit() { } //销毁 public void _jspDestroy() { } //jsp服务 public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
判断请求
内置对象
final javax.servlet.jsp.PageContext pageContext;//页面上下文javax.servlet.http.HttpSession session = null;//session final javax.servlet.ServletContext application;//ServletContext application final javax.servlet.ServletConfig config;//配置 javax.servlet.jsp.JspWriter out = null;//out final java.lang.Object page = this;//当前页 final javax.servlet.http.HttpServletRequest request//请求 final javax.servlet.http.HttpServletResponse response///响应
输出页面前增加的代码
response.setContentType("text/html"); pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true); _jspx_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out;
这些对象我们可以在jsp中直接使用
我们在<%%>中写Java代码
<% session.invalidate(); %>
源码
<%-- Created by IntelliJ IDEA. User: Lenovo Date: 30/8/2022 Time: 下午7:39 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>hello</title> </head> <body> <% String name="jinnice"; %> name:<%=name%> </body> </html>
在jsp中
java代码原封不动输出
html代码就会用out.write
我们可以创建普通项目,然后在项目上添加web支持
jsp是Java的一种技术应用也有属于自己的语法
我们可以通过热部署方式使用tomcat不用每次都重新启动,部署工件时用war exploded
jsp使用
<%--jsp变量或表达式 用来将程序输出到客户端 <%=变量或者表达式%> --%> <%= new java.util.Date()%> <%--jsp脚本片段--%> <% int sum=0; for(int i=0;i<=100;i++) { sum+=i; } out.print("<h1>sum="+sum+"<h1>"); %>
jsp声明,在<%!>中可以写方法和全局变量
<%! public void say() { System.out.println("welcome"); } %>
jsp声明会被编译到jsp生成的jsp的类里,其他的会到jspservice方法
定制错误页面
<%-- Created by IntelliJ IDEA. User: Lenovo Date: 30/8/2022 Time: 下午11:14 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@page errorPage="error/500.jsp" %> <html> <head> <title>Title</title> </head> <body> <% int i=1/0; %> </body> </html>
<%-- Created by IntelliJ IDEA. User: Lenovo Date: 30/8/2022 Time: 下午11:06 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <img src="../img/河大景色.jpg"> </body> </html>
在web.xml中定制错误页面
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <error-page> <error-code>500</error-code> <location>/error/500.jsp</location> </error-page> </web-app>