ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JSP原理

2021-05-22 09:05:58  阅读:214  来源: 互联网

标签:IDEA javax JSP 原理 servlet pageContext out


JSP原理

什么是JSP

Java Server Page JAVA服务器端页面,也和Servlet一样,用于动态Web技术
最大的特点:

  • 写JSP就像写HTML
  • 区别:
    HTML中只给用户提供静态的数据;
    JSP页面中可以嵌入JAVA代码,为用户提供动态数据;

JSP原理

思路:JSP到底是怎么执行的?

  • Tomcat中有一个work目录;
  • IDEA使用Tomcat会在IDEA的tomcat中生产一个
    该文件为tomcat的工作目录
    而想要在IDEA中找到其工作目录,需先在配置文件中设置路径:
    在这里插入图片描述
    在IDEA工作目录中找到idea.properties文件,使用编辑器打开该文件,修改下列语句
    在这里插入图片描述
    该语句默认是被注释掉的,这里我取消注释后,将其路径修改我的自己设置的路径(注:该路径在系统中必需已经存在,否则,idea启动会报错)。
    而后重启IDEA,新建一个web项目,通过tomcat启动该web项目
    启动之后自动弹出浏览器界面
    在这里插入图片描述
    此后我们查找IDEA下tomcat创建的临时工作目录
    C:\Users\30869.IntelliJIdea\system\tomcat\d0ce923c-c08e-43a7-876c-34572a3e37e1\work\Catalina\localhost\session_cookie_war\org\apache\jsp
    • 这个目录的前部分C:\Users\30869.IntelliJIdea\system,与上面的配置文件设置的文件路径一致
    • 而session_cookie_war为我的项目名称
      在该路径下,我们可以看到,产生了两个临时文件
      在这里插入图片描述
      通过观察,理解概念:浏览器向服务器发送请求,不管访问上面资源,其实都是在访问Servlet!
      JSP最终也会转换成一个java类
      打开index_jsp.java文件,观察源码
      在这里插入图片描述
      可以看到index_jsp继承了org.apache.jasper.runtime.HttpJspBase
      观察源码
      在这里插入图片描述
      在这里插入图片描述
      发现实现了Servlet接口
      JSP的本质就是一个Servlet
public interface Servlet {
	//初始化
    void init(ServletConfig var1) throws ServletException;
	//服务
    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
	//销毁
    void destroy();
}

1、判断请求
2、内置了一些对象

	final javax.servlet.jsp.PageContext pageContext;	//页面上下文
    javax.servlet.http.HttpSession session = null;			//session
    final javax.servlet.ServletContext application;			//applicationContxt
    final javax.servlet.ServletConfig config;					//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	//响应

3、输出页面前增加的代码

	  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页面直接使用
4、然后输出

	  out.write("<html>\n");
      out.write("<body>\n");
      out.write("<h2>Hello World!</h2>\n");
      out.write("</body>\

在JSP页面中;
只要是JAVA代码就会原封不动的输出;
如果HTML代码,就会被转换成:

      out.write("<html>\n");

这样的格式渲染到前端。

流程图

在这里插入图片描述
我们可以通过修改JSP文件中的代码,通过查看临时文件,更加深入理解该过程,学无止尽,冲冲冲

标签:IDEA,javax,JSP,原理,servlet,pageContext,out
来源: https://blog.csdn.net/qq_38125995/article/details/117139261

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有