JSP知识点积累

 

一、 jsp入门

java server page

1. web资源的运行原理

    html 静态web资源,DefaultServlet读取html文件,通过response输出给IE浏览器

    Servlet 动态web资源,web容器(Servlet引擎)解析web.xml文件,找到url对应的java

              通过反射创建Servlet对象,调用service方法

              Class.forName(“cn.itcast.servlet.Servlet 1” ).newInstance();

    jsp: 动态web资源

    jsp页面在第一次被访问的时候,web容器(jsp引擎)会将jsp翻译成一个Servlet,然后调用servletservice方法

    jsp 翻译后的Servlet会被放到

    %tomcat安装目录%\work\Catalina\localhost\webcontext

    jsp页面被再次访问的时候,web容器会去直接调用Servlet的方法,所以通常来讲 jsp 只是在第一次被访问的时候比较慢

    如果jsp页面做了修改,此时web容器会重新翻译jsp

 

2. jsp 是什么

实际上 jsp 就是 Servlet 只是提供了一种比较直观的书写方式,因为写jsp就像在写Html

 

jsp中可以写 java 代码, 有两种写法

1) jsp 脚本表达式

内容会被放到 out.print() 里面 输出个浏览器

<%=new Date() %>

 

2) jsp脚本片段

内容会原封不动地被翻译到 Servlet service方法中

<%

    // java 代码

   

%>

 

 

3. jsp Servlet的区别

1) Servlet 适合写java代码,因为Servlet就是一个java

    在开发中使用Servlet对用户发送的请求进行处理并做出响应

     获得请求参数  dao做增删改查  对数据进行运算 对页面进行跳转

 

2) jsp 适合做数据美化,作为 数据显示模板

    因为jsp页面直接书写HTML标签

 

3) 项目中的web层通常使用mvc设计模式  Servlet+jsp+javabean

    其中, Servlet做控制器,处理用户请求

           jsp作为显示模板

           javabean 作为封装数据的实体

 

4) 如何养成一种良好的编码风格

    Servlet中应避免做任何的数据输出

    jsp 中应避免去直接书写java代码, 而实际上要做到这点很难, 所以需要用到 el jstl

 

 

二、 jsp语法

1. 模板元素

    jsp 页面中所有的 html 标签部分被称作模板元素,用于对整个网页进行布局

2. jsp脚本

    jsp中的java代码被称作jsp脚本

    有三种形式

    1) 脚本表达式

       被翻译到 out.print() 方法中

       <%=new Date() %>

    2) 脚本片段

       被翻译到 service 方法中

       <%

           for(int i=0; i<10; i++) {

              System.out.println(i);

           }

       %> 

    3) jsp 声明

       被翻译到 service 方法外面

       写成员变量\成员方法\静态代码块

       <%!

           private String name;

           static {

              .......

           }

       %>

 

    

3. jsp指令

Jsp指令用于向jsp引擎说明情况

include指令 用于包含一个页面

taglib 指令用于引入标签库文件

page指令 用于向jsp引擎说明jsp的页面情况

page指令一般都放在页面的开头,但是不管放在哪都对整个页面起作用

page指令 常用的主要有一下几个:

1) import 导包, 导入多个包时需要以“,”隔开  也可以分作多条指令书写

2 session 说明是否使用session

       默认值为true,被翻译的Serlvet中会自动获得Session
      
如果将该值指定为false 被翻译的Servletservice方法中将不获取session

3 errorPage 指定错误跳转的页面

       web.xml 文件中同样可以配置错误页面

       可根据异常类型或错误编码进行配置

       error-page

4)  pageEncoding

    通知jsp引擎在翻译jsp的过程中以什么编码方式来解码jsp文件

    通知 Servlet引擎 response编码方式,相当于 response.setContentType()

    说白了

    只要给jsp指定了 pageEncoding=”utf -8”

    jsp引擎在翻译jsp, 就会自动加上一句

    response.setContentType(“text/html;charset=utf -8” )

 

 

三、 jsp 九个隐式对象 

1. 面试题:

列举出jsp页面的九个隐式对象,并加以说明

Jsp的九个隐式对象就是 翻译完的Servletservice方法的形参和局部变量

 

对象变量名,可直接在jsp中使用

对象类型

config

ServletConfig

application

ServletContext

response

HttpServletResponse

request

HttpServletRequest

session

HttpSession

out

JspWriter

page

this

exception

Throwable

pageContext

PageContext

 

 

 

2. out 对象

JspWriter类型, 带缓冲的字符流 (包装流)  BufferedWriter

写入该流的数据最终会被刷新到 response  , 调用response.getWriter().write() 方法

 

什么情况下 JspWriter 会将数据刷新

1) 缓冲区写满(默认大小为8kb, 可以在page指令中通过 buffer属性设置缓冲区大小)

2) jsp 页面结束

 

Jsp引擎刷新缓冲区的方式:  response.getWriter().write();

 

注意:

1)jsp中输出数据尽量使用 out 不要使用response直接获得流输出

原因在于, 写入 out 的数据会进缓冲区 再刷新到response, 如果两个都用,会导致后写的数据显示在前面

2)jsp 页面结束时会自动调用 response.getWriter() 将数据刷新

所以在jsp中不要调用 getOutputStream()

当然也不方便做文件下载

 

结论: jsp 中用 out 输出数据 

 

3. pageContext对象

主要功能,用于获得其他8大隐式对象

这样做的意义:

需要移除jsp中的java代码,就需要将java代码写到一个java类的成员方法中,然后想办法在jsp

页面中调用该方法,以达到代码复用的目的

由于在jsp中的java代码难免会访问8个隐式对象,因为这些对象都是和web开发相关的对象

要移除这部分java代码就需要将8个对象传递给java类的方法,为了方便,我们通常的做法是只传递一个

pageContext对象过去,这样在方法中就可以通过该对象很轻松地获得其他8个对象了

 

pageContext 也是一个域对象,但只是在当前jsp页面有效

 

重点:

1)  默写9个对象, (具体描述9个对象怎么用)

2)  理解pageContext对象的意义 (获得其他8个对象)

 

pageContext 有个特殊的方法 findAttribute()

依次去四个域对象中找属性,顺序 page request session application 找到了就返回 如果四个域中都没有就返回null

 


你可能感兴趣的:(职场,休闲,JSP知识点积累)