Java server pages:Java服务器端页面,也和servlet一样,用于开发动态web!
最大的特点:
写JSP就像在写HTML区别:
HTML只给用户提供静态数据JSP页面中可以嵌入JAVA代码,为用户提供动态数据 JSP原理
浏览器向服务器发送请求!,不管在访问什么资源,其实都是在访问Servlet!
JSP最终会被转化成一个java类!
如何找到JSP转化成的Java类呢?
找到idea中的tomcat工作空间,具体路径:在运行tomcat后查看server中的信息
D:Tomcatapache-tomcat-9.0.59bincatalina.bat run [2022-03-26 03:58:52,609] Artifact javaweb-session-cookie:war: Waiting for server connection to start artifact deployment… Using CATALINA_base: "C:UserswuzheAppDataLocalJetBrainsIntelliJIdea2021.3tomcat900a194d-0ccc-4697-94ef-825775c452cb" Using CATALINA_HOME: "D:Tomcatapache-tomcat-9.0.59" Using CATALINA_TMPDIR: "D:Tomcatapache-tomcat-9.0.59temp" Using JRE_HOME: "D:JDK8" Using CLASSPATH: "D:Tomcatapache-tomcat-9.0.59binbootstrap.jar;D:Tomcatapache-tomcat-9.0.59bintomcat-juli.jar" Using CATALINA_OPTS: ""
Using CATALINA_base对应的路径就是tomcat的工作空间
然后查找的路径就类似于
C:UserswuzheAppDataLocalJetBrainsIntelliJIdea2021.3tomcat900a194d-0ccc-4697-94ef-825775c452cbworkCatalinalocalhostjavaweb_session_cookie_warorgapachejsp
在这个路径下我们就能找到JSP转换成的Java类。
我们可以看到这个类继承自HttpJspbase:
public final class index_jsp extends org.apache.jasper.runtime.HttpJspbase implements org.apache.jasper.runtime.JspSourceDependent, org.apache.jasper.runtime.JspSourceimports
HttpJspbase继承自HttpServlet,这就说明JSP也是Servlet服务。
一些内置对象:
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; //config javax.servlet.jsp.JspWriter out = null; //输出对象 final java.lang.Object page = this; //代表当前页 HttpServletRequest request; //请求 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中直接使用
在JSP页面中,只要是Java代码就会原封不动的输出,如果是HTML代码,就会被转化为:
out.write("HTML代码");



