Jsp/Servlet基础-一

一、JSP的基本原理

         JSP的本质是Servlet,当用户向指定Servlet发送请求时,Servlet利用输出流动态生成HTML页面,包括每一个静态的HTML标签和所有在HTML中出现的内容。

        由于包含大量的HTML标签、大量的静态文本及格式等,导致Servlet的开发效率极为低下。所有的表现逻辑,包括布局、色彩及图像等,都必须耦合在Java代码中,这的确让人不胜其烦。JSP的出现弥补了这种不足,JSP通过在标准HTML中嵌入Java代码,其静态的部分无须Java程序控制,只有那些需要从数据库读取或需要动态生成的页面内容,才使用Java脚本控制。

        从上面的介绍可以看出,JSP页面的内容由如下两部分内容组成。

       》静态部分:标准的HTML标签、静态的页面内容,这些内容与静态HTML页面相同。

       》动态部分:受Java程序控制的内容,这些内容由Java程序来动态生成。

       根据JSP页面的工作原理,可以得到如下4个结论:

       》JSP文件必须在JSP服务器内运行。

       》JSP文件必须生成Servlet才能执行。

       》每个JSP页面的第一个访问者速度很慢,因为必须等待JSP编译成Servlet。

       》JSP页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准的HTML页面。

二、JSP注释

         JSP注释的格式如下:

         <%--注释内容--%>

         HTML注释的格式是:

        <!--注释内容-->

        说明:HTML的注释内容可以通过源代码查看到,但JSP的注释是无法通过源代码查看到的。这表明JSP注释不会发送到客户端。

三、JSP声明

         JSP声明用来声明变量和方法。语法格式如下:

         <%!  声明部分  %>

        提示:不能使用abstract修饰声明部分的方法,因为抽象方法将导致JSP对应的Servlet变成抽象类,从而导致无法实例化。

四、输出JSP表达式

         语法格式如下:

         <%=表达式=%>

五、JSP脚本

         语法格式如下:

         <% 脚本内容 %>

六、JSP的3个编译指令

         JSP的编译指令是通知JSP引擎的消息,它不直接生成输出。编译指令都有默认值,因此开发人员无须为每个指令设置值。

         常见的编译指令有如下三个。

          》page:该指令是针对当前页面的指令。

          》include:用于指定包含另一个页面。

          》taglib:用于定义和访问自定义标签。

        使用编译指令的语法格式如下:

          <%@ 编译指令名  属性名=“属性值”。。。%>

七、JSP的7个动作指令

          动作指令与编译指令不同,编译指令是通知Servlet引擎的处理消息,而动作指令只是运行时的动作。编译指令将在JSP编译成Servlet时起作用;而处理指令通常可替换成JSP脚本,它只是JSP脚本的标准化写法。

          JSP动作指令主要有如下7个。

          》jsp:forword:执行页面跳转,将请求的处理转发到下一个页面。

          》jsp:param:用于传递参数,必须与其他支持参数的标签一起使用。

          》jsp:include:用于动态引入一个JSP页面。

          》jsp:plugin:用于下载JavaBean或Applet到客户端执行。

          》jsp:useBean:创建一个JavaBean的实例。

          》jsp:setProperty:设置JavaBean实例的属性值。

          》jsp:getProperty:输出JavaBean实例的属性值。

 

         知识点补充:静态导入和动态导入有如下三点区别:

               1.静态导入是将被导入页面的代码完全融入,两个页面融合成一个整体Servlet;而动态导入则在Servlet中使用include方法来引入被导入页面的内容。

               2.静态导入时被导入页面的编译指令起作用;而动态导入时被导入页面的编译指令会失去作用,只是插入被导入页面的body内容。

               3.动态包含还可以增加额外的参数。

八、JSP脚本中的9个内置对象

             JSP脚本中包含9个内置对象,这9个内置对象都是Servlet API接口的实例,只是JSP规范对它们进行了默认初始化(由JSP页面对应Servlet的_jspServlet()方法来创建这些实例)。也就是说,它们已经是对象,可以直接使用。9个内置对象依次如下:

            》application:javax.servlet.ServletContext的实例,该实例代表JSP所属的Web应用本身,可用于JSP页面,或者在Servlet之间交换信息。常用的方法有getAttribute(String attName)、setAttribute(String attName,String attValue)和getInitParameter(String paramName)等。

            》config:javax.servlet.ServletConfig的实例,该实例代表JSP的配置信息。常用的方法有getInitParameter(String attName)和getInitParameternames()等方法。事实上,JSP页面通常无须配置,也就不存在配置信息。因此,该对象更多的在Servlet中有效。

            》exception:java.lang.Throwable的实例,该实例代表其他页面中的异常和错误。只有当页面时错误处理页面,即编译指令page的isErrorPage属性值为true时,该对象才可以使用。常用的方法有getMessage()和printStackTrace()等。

            》out:java.servlet.jsp.JspWriter的实例,该实例代表JSP页面的输出流,用于输出内容,形成HTML页面。

            》page:代表该页面本身,通常没有太大用处。也就是Servlet中的this,其类型就是生成的Servlet类,能用page的地方就能用this。

            》pageContext:java.servlet.jsp.PageContext的实例,该页面代表JSP页面的上下文,使用该对象可以访问页面中的共享数据。常用的方法有getServletContext()和getServletConfig()等。

            》request:java.servlet.http.HttpServletRequest的实例,该对象封装了一次请求,客户端的请求都被封装在该对象里。这是一个常用的对象,获取客户端请求参数必须使用该对象。常用的方法有getParamter(String paramName)、getParameterValues(String paramName)、setAttribute(String attrName,Object attrValue)、getAttribute(String attrName)和setCharacterEncoding(String env)等。

            》response:java.servlet.http.HttpServletResponse的实例,该实例代表服务器对客户端的响应。通常很少使用该对象直接响应,而是使用out对象,除非需要生成非字符响应。而response对象通常用于重定向,常用的方法有getOutputStream()、sendRedirect(java.lang.String location)等。

            》session:java.servlet.http.HttpSession的实例,该实例代表一次会话。当客户端浏览器与服务器站点建立连接时,会话开始;当客户端关闭浏览器时,会话结束。常用的方法有:getAttribute(String attrName)、setAttribute(String attrName,Object attrVale)等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值