jsp基础—1

来源:互联网 发布:php 微信开发 编辑:程序博客网 时间:2024/06/08 00:47

*0 带用验证码功能的用户登录

  1)验证码使用一个CheckCodeSerlvet产生,通过<img src=""/>发送请求,将验证码绑定到HttpSession

  2)产生的验证码一定要在输出到浏览器之前绑定到HttpSession

  3)设置验证码禁止缓存要在输出到浏览器之前  

  4)所有响应头的设置放置在最先

 

1 什么是JSP

  1)为什么说,Servlet是一个动态Web开发技术呢?

    Servlet是基于服务端的一种动态交互技术,

    HttpServletRequest表示客户端到服务端的对象

    HttpServletResponse表示服务端到客户端的对象

  2)JSPSUN公司开发的一个基于服务端的一种动态WEB开发技术

  3)JSP的代码结构/内容=HTML+JSP所有元素内容   

  4)IDE工具中,开发JSP,pageEncoding有二层含义:

a)指明当前JSP中的中文采用什么方式编码(如果在IDE工具外)

b)指明当前JSP页面保存时采用什么方式编码

  5)项目中,JSP最佳实践模式:

Servlet:适合控制器

Jsp:适合显示

JavaBean:模型

    

*2 JSP工作原理

  1)Web容器根据客户端访问的资源类别(Web容器会根据资源的第一行代码确定),如果你访问的是JSP资源,就交由JSP引擎处理

    如果你访问的是Servlet资源,就交由Servlet引擎处理

  2)如果是JSP资源,JSP引擎会将其翻译成Servlet资源,传入相关的对象,如果是静态资源,以out.write()形式输出,如果是动态     资源,以out.print()形式输出

  3)此时JSP引擎在翻译正确后,将其输出给Servlet引擎,当作Servlet处理。

  4)如果再次访问同一个date.jsp文件,翻译工作依然进行,Servlet引擎工作可以减化,所以这是为会么第N次较第1次快的原因

  

3 JSP语法

  1)JSP模版元素

模版元素就是HTML中的静态内容,即<body>,<table>,<form>标签。。。

 

  2)JSP表达式

        a)语法:<%="字符串变量或表达式"%>

        b)结束无分号   

        c)默认输出到浏览器

 

  3)JSP脚本片断

a)语法:<% ...java代码; %>

        b)脚本片断中的注释符号与java代码一致

        注意:JSP修改后,无需重新部署,直接刷新,Web容器会自动比较新旧二个版本的JSP

c)多个JSP脚本片断中定义的变量,本质是_jspService()方法中的局部变量,可以访问

  4)JSP声明

a)语法:<%! ...java代码%>

...java代码这里的 所有Java代码翻译为servlet时都是位于与doGet方法,同级代码目录下,因此定义的变量为实例变量,实例方法或普通方法

而在:<% ...java代码; %>jsp脚本片段中的Java代码会翻译在service中,此时脚本片段中不允许再定义方法,因为Java不允许方法中定义方法。

 

        b)JSP声明的变量或方法,会成为Servlet的实例变量或实例方法或普通方法

        c)JSP脚本片断中不能定义局部方法,方法只能定义在JSP声明中

      

 

  5)JSP注释

1)语法:<%--注释的内容 --%>

        2)对于HTML注释来说,JSP引擎会将其翻译成servlet内容,

  对于JSP注释来说,JSP引擎不会将其翻译成servlet内容

        3)注释不能嵌套使用

   

  6)JSP指令

1)指令是程序员控制JSP引擎做什么的依据

2)有三类:

a)page

b)include

c)tablib

       *3)page指令的属性有

language="指明JSP支持的语言,默认为java语言"

       *import="当前JSP页面中,需要导入的包,其中import可以写多次"

            session="true表示需要服务器创建session/

false不需要服务器创建session",默认true

    buffer="none|8kb|sizekb"JSP输出使用的缓存大小,默认8kb

    autoFlush="true表示当缓存满时,web容器是自动刷新到客户端/false需要手工刷新到客户端",默认true

                isThreadSafe="true表示web服务器确保线程安全/false不确保线程安全",默认true

info="text"表示jsp的相关描述信息,可以通过getServletInfo()取得该jsp的信息

       *errorPage="当前jsp页面出错后,转发到的目标页面"

       *isErrorPage="true"(当某个jsp页面有该属性时,web容器会自动创建exception对象

                上述异常处理属于局部异常处理

web.xml文件:

     <error-page>

   <error-code>500</error-code>

   <location>/s_500.jsp</location>

        </error-page>

            <error-page>

    <exception-type>java.lang.NumberFormatException</exception-type>

            <location>/s1_500.jsp</location>

         </error-page>

                上述异常处理属于全部异常处理

                如果全局中有code又有type,此时二者同时显示

                当全局和局部异常同时出现时,局部异常优先

       *pageEncoding="UTF-8"  

前提在IDE工具中

a)JSP页面的中文采用UTF-8方式编码

b)JSP保存时采用UTF-8方式编码

c)指示浏览器以UTF-8方式查看

 

 

 

            contentType="text/html;charset=UTF-8"

       *isELIgnored="false表法JSP引擎不忽略EL表达式语言/true表法JSP引擎忽略EL表达式语言"    

        

 

 9)如何查找JSP页面中的错误

 

4 JSP出错后处理方法

 

5 M(Javabean)V(Jsp)C(Servlet)模式

 

6 @include指令[静态包含]

  1)include指令包含多个JSP页面,最后JSP引擎只翻译总JSP页面,index.jsp页面

  2)include指令包含多个JSP页面,那么被包含的JSP页面原封不动的进入总JSP页面,index.jsp页面,造成HTML结构非常混乱

  3)include指令包含多个JSP页面,多个JSP最终会翻译成一个Servlet,即index_jsp.java页面

 

*7 jsp九大隐式/内置对象

    1)request

    2)response

    3)session

访问jsp页面时,默认web服务器创建session

访问servlet时,必须通过request.getSession()才能创建session

在转发和重定向情况下,session域不会销毁

    4)application=ServletContext对象

    5)config:取得jspweb.xml文件中的映射信息

    6)exception:该对象只能在<%@isErroPage="true"%>的情况下,容器才会创建,否则容器不予创建

    7)outout的类型是JspWriter,它是具体缓存功能的PrintWriter对象

    8)pageContext: 表示Jsp行运过程中的环境对象

      a)能够取得其它8个内置对象

      b)具有转发和包含的功能

      c)域对象

[pageContext/request/session/application]

    9)page