JSP总结(一)

一、JSP概念

1.JSP与Servlet的区别与联系:

Servlet:包含HTML的Java代码

JSP(Java ServerPages):包含Java代码的HTML本质还是转换成为Servlet,但是能够解决Sevlet存在的缺点:输出HTML多时的困难。

注:JSP和Servlet都是产生动态内容的技术。

2.JSP处理流程:

<1>第一次请求或.jsp文件修改了:

 .jsp文件—翻译—>_jsp.java文件(此类继承HttpJspBase类、实现JspSourceDependent接口)—编译—>_jsp.class文件——>实例化——>初始化_jspInit()方法——>服务_jspService(HttpServletRequest request, HttpServletResponseresponse)——>销毁_jspDestroy().

<2>非第一次请求:

.jsp文件——>实例化——>初始化_jspInit()方法——>服务——>销毁

注:除了第一次请求,以后的请求直接实例化,不需要翻译、编译,这也是为什么JSP第一次请求慢的原因。

3.JSP语法:

JSP里嵌套Java代码的规则:

<1>小脚本:

<%=表达式%>                 翻译后:_jspService()中的out.print(表达式);

<2>表达式:

<%

       语句1;

       语句2;

       ……

                     %>               翻译后:_jspService()中的语句;

<3>变量、方法声明:

<%!

   语句1;

       语句2;

       ……

                     %>               翻译后:作为生成的Servlet的成员变量成员方法;

<4>静态内容:文本、注释、标签等

                                          翻译后:_jspService()中的out.write(“字符”).

4.page:提供容器信息

如:<%@ pagelanguage=”java” contenType=”text/html” char-set=”UTF-8” pageEncoding=”UTF-8”%>

       导包:<%@ page import=”com.zh.numguess.Numguess” %>

5.Javabean:遵循一定设计模式的Java类,具体要求如下:

       <1>要有一个无参的构造函数;

<2>属性私有,提供对应的getter和setter方法;

<3>要实现序列化接口:Serializable接口.

二、JSP动作:

1.<jsp:useBeanid="user"class="com.zh.ch01.User" scope="request"></jsp:useBean>

<!—- 作用:在指定的范围内查找指定的变量,如果变量存在,就用该变量;反之,实例化一个变量-->

<!-- id:指定要查找或创建的变量

     class:要实例化的类

     scope:指定要查找的范围(默认page范围)注意:session范围要加锁

     type:要查找的赋给变量的类(不指定的话和class一致)

注:如果只只指定type而没有class,当变量找不到时就抛出异常。

 -->

2.<jsp:setProperty>

<1>直接赋值:赋方式有三种(直接、小脚本、EL表达式)

如:<jsp:useBeanid="user"class="com.zh.ch01.User"scope="request"></jsp:useBean>

<!-- 以下代码可以放到useBean内部,也可以不在其内部 -->

<jsp:setPropertyproperty="name"name="user"value="l4"/><!-- 1.直接量赋值 -->

<jsp:getPropertyproperty="name"name="user"/>

<jsp:setPropertyproperty="name"name="user"value='<%="w8"%>'/><!-- 2.小脚本赋值 -->

<jsp:getPropertyproperty="name"name="user"/>

<jsp:setPropertyproperty="name"name="user"value='${"t6"}'/><!-- 3.EL表达式赋值 -->

<2>根据请求参数赋值:

<jsp:useBeanid="user"class="com.zh.ch01.User"scope="request"></jsp:useBean>

<!-- 以下代码可以放到useBean内部,也可以不在其内部 -->

<!-- param是用来指定获取的参数名称,在地址栏中原地址后写:?uname=”z3” -->

<jsp:setPropertyproperty="name"name="user"param="uname"/>

<jsp:getPropertyproperty="name"name="user"/>

2.<jsp:getProperty>

如:<jsp:useBeanid="user"class="com.zh.ch01.User"scope="request"></jsp:useBean>

 

<!-- 以下代码可以放到useBean内部,也可以不在其内部 -->

<jsp:setPropertyproperty="name"name="user"value="l4"/>

<%=user.getName() %><!-- 用以下方式代替 -->

<!-- property指定Bean的属性,name指定Bean的名称 -->

<jsp:getPropertyproperty="name"name="user"/>

3.<jsp:include>动态包含

注意动态包含与静态包含的区别:

静态包含:<%@include file=”…….html” %>静态包含不会检查所含文件的变化,适用于包含静态页面。

动态包含:<jsp:includepage=”…….jsp”></jsp:include>动态包含顾名思义,即总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

         注:动态包含的每个页面都要写<jsp:useBean ……></jsp:useBean>,静态包含则不需要。

总的来说就是:一个包含动态页XXX.jsp,一个包含静态页XXX.htm

如:<jsp:includepage="Included.jsp">

<jsp:paramvalue="18"name="age"/>               <!-传参 -à

</jsp:include>

Included.jsp页面内容:

<body>

included

<%=request.getParameter("age")%>              <!-接受参数-à

</body>

4.<jsp:forward>:当前页面转发到下一页面

<jsp:forwardpage="To.jsp">

<jsp:paramvalue="24"name="age"/>             <!—转发过程中传参-->

</jsp:forward>

To.jsp页面内容:

<body>

to

<%=request.getParameter("age")%>                   <!—接受参数—->

</body>

三、4个范围

Page:只能在当前的servlet访问到(静态包含也是page范围)

Request在本次请求范围内访问(转发可以在多个servlet间访问、动态包含等)

Session用户的本次会话

Application应用不停止,变量都能访
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值