JSP笔记<一>

本文详细介绍了JSP的位置、处理流程及其生命周期,包括JSP被转化为servlet、编译、初始化、执行和清理阶段。在执行阶段,JSP引擎调用_sspService()方法处理请求,而在销毁阶段,会调用jspDestroy()进行资源清理。

JSP

JSP所处位置

下图为JSP容器和JSP文件在web应用中所处的位置
image

JSP处理流程

  1. 就想其他普通网页一样,您的浏览器发送一个HTTP请求给服务器
  2. Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎,通过使用URL或者.jsp文件来完成。
  3. JSP引擎从磁盘中载入JSP文件,然后将他们转化为servlet。这种转化只是简单地将所有模板文本改用println语句,并且将所有JSP元素转化为JAVA代码
  4. JSP引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎。
  5. Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
  6. Web服务器以静态HTML网页形式将HTTP response返回到您的浏览器中。
  7. 最终,Web浏览器处理HTTP response中动态产生的HTML网页,就好像在处理静态网页一样。

图示

JSP生命周期

  • 编译阶段

servlet容器编译servlet源文件,生成servlet类

  • 初始化阶段

加载与JSP对应的servlet类,创建其实例,并调用它的初始方法

  • 执行阶段

调用与JSP对应的servlet实例的服务方法

  • 销毁阶段

调用与JSP对应的servlet实例的销毁方法,然后销毁servlet实例

图示

JSP编译

当浏览器请求JSP页面时,JSP引擎会首先去检查是否需要编译这个文件。如果这个文件没有被编译过,或者在上次编译后被更改过,则编译这个JSP文件。
编译的过程包括三个步骤:
- 解析JSP文件。
- 将JSP文件转为servlet。
- 编译servlet。

JSP初始化

容器载入JSP文件后,它会在为请求提供任何服务前调用jspInit()方法。如果您需要执行自定义的JSP初始化任务,复写jspInit()方法就行了

 JSP执行

这一阶段描述了JSP生命周期中一切与请求相关的交互行为,直到被销毁。
当JSP网页完成初始化后,JSP引擎将会调用_jspService()方法。
_jspService()方法需要一个HttpServletRequest对象和一个HttpServletResponse对象作为它的参数,就像下面这样:

void _jspService(HttpServletRequest request,
                 HttpServletResponse response)
{
   // 服务端处理代码
}

JSP清理

JSP生命周期的销毁阶段描述了当一个JSP网页从容器中被移除时所发生的一切。
jspDestroy()方法在JSP中等价于servlet中的销毁方法。当您需要执行任何清理工作时复写jspDestroy()方法,比如释放数据库连接或者关闭文件夹等等。

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@ page isELIgnored="false" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="author" content="order by dede58.com"/> <title>小米手机列表</title> <link rel="stylesheet" type="text/css" href="/css/style.css"> </head> <body> <!-- start header --> <header> <div class="top center"> <div class="left fl"> <ul> <li><a href="/index.jsp">小米商城</a></li> <li>|</li> <li><a href="">MIUI</a></li> <li>|</li> <li><a href="">米聊</a></li> <li>|</li> <li><a href="">游戏</a></li> <li>|</li> <li><a href="">多看阅读</a></li> <li>|</li> <li><a href="">云服务</a></li> <li>|</li> <li><a href="">金融</a></li> <li>|</li> <li><a href="">小米商城移动版</a></li> <li>|</li> <li><a href="">问题反馈</a></li> <li>|</li> <li><a href="">Select Region</a></li> <div class="clear"></div> </ul> </div> <div class="right fr"> <div class="gouwuche fr"><a href="">购物车</a></div> <div class="fr"> <ul> <c:if test="${user==null}"> <li><a href="/login.jsp">登录</a></li> <li>|</li> <li><a href="/register.jsp">注册</a></li> <li>|</li> <li><a href="/cart.jsp">购物车</a></li> </c:if> <c:if test="${user!=null}"> <li><img style="width: 38px; height: 38px;border-radius: 18px;margin-right: 5px" src="${user.pic}"></li> <li>|</li> <li><a href="/login.jsp">${user.username}</a></li> <li>|</li> <li><a href="/index.jsp">首页</a></li> <li>|</li> <li><a href="/cart.jsp">个人中心</a></li> </c:if> </ul> </div> <div class="clear"></div> </div> <div class="clear"></div> </div> </header> <!--end header --> <!-- start banner_x --> <div class="banner_x center"> <a href="index.jsp"><div class="logo fl"></div></a> <a href=""><div class="ad_top fl"></div></a> <div class="nav fl"> <ul id="categoryList"> <li><a href="/list.jsp">小米手机</a></li> <li><a href="">红米</a></li> <li><a href="">平板·笔记本</a></li> <li><a href="">电视</a></li> <li><a href="">盒子·影音</a></li> <li><a href="">路由器</a></li> <li><a href="">智能硬件</a></li> <li><a href="">服务</a></li> <li><a href="">社区</a></li> </ul> </div> <div class="search fr" style="position: relative;top: -12px"> <form action="" method="post"> <div class="text fl"> <input type="text" id="shuru" class="shuru" placeholder="小米6 小米MIX现货"> </div> <div class="submit fl"> <input type="submit" id="sousou" class="sousuo" value="搜索"/> </div> <div class="clear"></div> </form> <div class="clear"></div> </div> </div> <!-- end banner_x --> <!-- start banner_y --> <!-- end banner --> <!-- start danpin --> <div class="danpin center"> <%-- <div class="biaoti center">小米手机</div>--%> <%-- <div class="main center" style="width: 1226px;height: 800px;display: flex;flex-wrap: wrap;align-content: space-around;justify-content: space-between;flex-direction: row;">--%> <%-- <c:forEach items="${goodsList}" var="goods" varStatus="status">--%> <%-- <div class="mingxing fl mb20" style="border:2px solid #fff;width:230px;cursor:pointer;" onmouseout="this.style.border='2px solid #fff'" onmousemove="this.style.border='2px solid red'">--%> <%-- <div class="sub_mingxing"><a href="/goods/goodshow?id=${goods.id}"><img src="${goods.pic}" alt=""></a></div>--%> <%-- <div class="pinpai"><a href="/goods/goodshow?id=${goods.id}">${goods.name}</a></div>--%> <%-- <div class="youhui">${goods.title}</div>--%> <%-- <div class="jiage">${goods.price}元</div>--%> <%-- </div>--%> <%-- </c:forEach>--%> <%-- <c:if test="${status.count % 5 == 0}">--%> <%-- <div class="clear"></div>--%> <%-- </c:if>--%> <%-- </div>--%> <div id="divlist" class="main center" style="width: 1226px;height: 800px;display: flex;flex-wrap: wrap;align-content: space-around;justify-content: space-between;flex-direction: row;"> </div> </div> </div> <div class="main center mb20"> <footer class="mt20 center"> <div class="mt20">小米商城|MIUI|米聊|多看书城|小米路由器|视频电话|小米天猫店|小米淘宝直营店|小米网盟|小米移动|隐私政策|Select Region</div> <div>©mi.com 京ICP证110507号 京ICP备10046444号 京公网安备11010802020134号 京网文[2014]0059-0009号</div> <div>违法和不良信息举报电话:185-0130-1238,本网站所列数据,除特殊说明,所有数据均出自我司实验室测试</div> </footer> </div> <!-- end danpin --> <script> $("#sousou").click(function () { var sea = $("#shuru").val(); $.ajax({ url: "/goods/list1", type: "post", success:function (e) { } }) }) $(function () { $.ajax({ url:"/goods/lists", type:"post", success:function (e) { var lists=e.data; var html=''; for (var i=0;i<lists.length;i++){ html +="<div class=\"mingxing fl mb20\" style=\"border:2px solid #fff;width:230px;cursor:pointer;\" " + "onmouseout=\"this.style.border='2px solid #fff'\" " + "onmousemove=\"this.style.border='2px solid red'\">" + "<div class=\"sub_mingxing\"><a href=\"/goods/goodshow?id="+lists[i].id+"\" ><img src=\""+lists[i].pic+"\" alt=\"\"></a></div>" + "<div class=\"pinpai\"><a href=\"/goods/goodshow?id="+lists[i].id+"\" >"+lists[i].name+"</a></div>" + "<div class=\"youhui\">"+lists[i].title+"</div>" + "<div class=\"jiage\">"+lists[i].price+"元</div>" + "</div>"; } $("#divlist").append(html) } }) }) // $(function () { // $.ajax({ // url: "/goods/lists", // type: 'post', // success:function (e) { // var lists = e.data; // var html=''; // for ( var i = 0;i<lists.length;i++){ // html +="<div class=\"mingxing fl mb20\" style=\"border:2px solid #fff;width:230px;cursor:pointer;\" " // + "onmouseout=\"this.style.border='2px solid #fff'\" " // + "onmousemove=\"this.style.border='2px solid red'\">" // + "<div class=\"sub_mingxing\"><a href=\"/goods.jsp\"><img src=\""+lists[i].pic+"\" alt=\"\"></a></div>" // + "<div class=\"pinpai\"><a href=\"/goods.jsp\">"+lists[i].name+"</a></div>" // + "<div class=\"youhui\">"+lists[i].title+"</div>" // + "<div class=\"jiage\">"+lists[i].price+"元</div>" // + "</div>"; // // } // $("#divlist").append(html); // } // }) // }) </script> </body> </html>这里搜索怎么搞
最新发布
11-08
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值