💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] # 简介 servlet:可以用来写页面,在页面只能写变量,写代码方便,但是写页面麻烦 **jsp:在java服务器中的页面,也就是我们javaweb中的动态页面,其本质就是一个servlet** # 创建jsp ~~~ <%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %> <html> <head> <title>test</title> </head> <body> <% //控制台输出 System.out.println("hello jsp"); %> <!-- 页面输出 --> <%="你好" %> ~~~ 可以看到头部有2个utf-8,一个是给浏览器读取的时候指定,一个是给服务器读取的时候指定 # 运行原理 jsp本质就是一个servlet jsp页面只能在服务器上运行 jsp页面在访问时 服务器会将hello.jsp页面翻译为一个servlet.java文件 服务器会编译servlet.java文件为servlet.class文件 服务器创建servlet.class对象 调用servlet.class的service()方法处理用户的请求 翻译后的jsp对应java类保存在映射服务器的work文件夹中 翻译后的java类 继承HttpJspBase,HttpJspBase extends javax.servlet.http.HttpServlet 所以翻译后的java文件就是一个servlet jsp在第一次被访问时会被Web容器翻译成servlet,在执行 过程: 第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行 PS:被翻译后的servlet在Tomcat的work目录中可以找到 # 转换规则 html标签+html注释:标签内容都作为out.write()的参数写到响应体中 jsp脚本片段:直接放到service方法中,所以jsp脚本片段必须要符合java语法规范,一个页面中可以有多个脚本片段 jsp表达式:可以向页面输出一个对象或变量或字符串,相当于作为out.print("11");参数输出 # 服务器中的配置 在tomcat中的web.xml 有这个 ~~~ <servlet-mapping> <servlet-name>jsp</servlet-name> <url-pattern>*.jsp</url-pattern> <url-pattern>*.jspx</url-pattern> </servlet-mapping> ~~~ 表示所有的jsp都会过滤映射 # jsp脚本 * `<% 代码 %>`定义java代码,在service方法中.service方法中可以定义什么,该脚本就可以定义什么. * `<%! 代码 %>`定义java代码,在jsp转换后的java类的成员位置 * `<%= 代码 %>`定义的java代码,会输出到页面上.输出语句中可以定义什么,该脚本就可以定义什么.