JSP学习

JSP(Java Server Pages)页面虽然看上去和HTML没有区别,但如果服务器要给浏览器响应动态页面,就要处理Servlet。
而JSP与Servlet都是用于动态页面,在JSP还没有面试的年代,后端程序员写输出前端页面需要这样操作:
        resp.getWriter().write("<html>");
        resp.getWriter().write("<body>");
        resp.getWriter().write("<h2>Hello World</h2>");
        resp.getWriter().write("<body>");

JSP和HTML的区别就是:JSP是动态的;而HTML是伪动态的,即使利用一些JS让页面改变,其本质上还是没有与服务器发生交互。所以JSP中是可以嵌入Java代码的,目的是给用户提供动态数据。

JSP原理:
IDEA中使用Tomcat,会在IDEA的Tomcat目录中生成一个work目录,路径如下:

在这里插入图片描述
work目录继续深入:
在这里插入图片描述
在这里插入图片描述

最后停留在Java代码,因为JSP最后也会被转换成Java类。说明浏览器向服务器发送任何请求,其实都是在访问Servlet。

现在引入JSP的依赖:

    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.3</version>
    </dependency>

JSP本质上就是一个Servlet,其内置了一些对象,可以在上述的index.jsp.java中看到:

    final javax.servlet.jsp.PageContext pageContext;//页面上下文,存东西
    javax.servlet.http.HttpSession session = null;//Session,存东西
    final javax.servlet.ServletContext application;//与Servlet中的ServletContext一致
    final javax.servlet.ServletConfig config;//区别于ServletContext,ServletConfig是大仓库中小仓库
    javax.servlet.jsp.JspWriter out = null;//输出对象
    final java.lang.Object page = this;//page代表当前页
    javax.servlet.jsp.JspWriter _jspx_out = null;     
    javax.servlet.jsp.PageContext _jspx_page_context = null;

还有request,response,exception对象,以上这些对象JSP可以直接使用
里面有如下代码实现了index.jsp页面的HTML代码:

    try {
      response.setContentType("text/html");//设置了响应页面类型
      pageContext = _jspxFactory.getPageContext(this, request, response,
      			null, true, 8192, true);//this指的是page
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();//说明了application本质上是ServletContext
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();//此处回忆起之前Demo中为什么要将PrintWriter对象命名为out
      _jspx_out = out;

//输出页面前增加了代码
      out.write("<html>\n");
      out.write("<body>\n");
      out.write("<h2>Hello World!</h2>\n");
      out.write("</body>\n");
      out.write("</html>\n");

在index.jsp中所写的一起内容,或主动或被动最终都会转换成上面的Java代码输出。
例如,hello.jsp内容如下:

<%
    String name = "Ju";
%>

name: <%=name%>

启动Tomcat后进入hello.jsp页面,输出
在这里插入图片描述
此时进入上述的最后JSP目录下,查看hello.jsp.java的代码,发现上述的代码已经转换成下列的Java代码:

String name = "Ju";

      out.write("\r\n");
      out.write("\r\n");
      out.write("name: ");
      out.print(name);

在JSP页面中,只要是Java代码就会原封不动地输出,HTML代码会被转换成out.write输出。-是被“渲染出来的”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值