javaee之jsp见解

来源:互联网 发布:linux nvidia驱动卸载 编辑:程序博客网 时间:2024/06/14 06:37

JSP作用: 既能方便地写html代码,也能java代码

Jsp执行过程:  jsp文件->翻译->java文件->编译->class文件  (就是一个servlet程序)

Jsp的原理:jsp本质上是一个servlet


Jsp语法

Jsp模板

         语法:html代码就是模板

         作用:往页面输出静态html

         原理:翻译成out.write(xxx)


Jsp表达式

         语法:<%=变量%>

         作用:往页面输出变量

         原理:翻译成out.println(xxx)

Jsp脚本

         语法:<%  java代码  %>

         作用:执行java代码

         原理:原封不动地直接翻译到对应位置

 

         注意:jsp脚本和jsp表达式可以混合使用,完成动态输出


Jsp注释

  语法: <%-- jsp注释  --%>

  作用:注释jsp代码

  原理:不会翻译的

                   html注释:会被翻译和执行的

                   jsp注释:不会被翻译和执行的


Jsp声明(了解)

         语法:<%! 变量或者方法 %>

         作用:在jsp页面中声明成员变量和成员方法

         原理:直接翻译成jsp的变量和方法 

                            


Jsp指令


概念:

         Jsp指令是指告诉tomcat服务器如何翻译这个Jsp页面!!!!

 

基本语法

         <%@%>

 

   <%@page 属性1=值1  属性2=值2%>

         或者

         <%@page属性1=值1%>

         <%@page属性2=值2%>

 

注意:page指令一定是放在jsp的页面最前面

三个指令

      1)@page指令:

         作用:page指令用于配置jsp页面翻译属性

 

         language="java": 服务器使用什么语言翻译这个jsp文件

 

         import="java.util.*" 导入什么包

                                     jsp默认已经导入的包:

                                               importjavax.servlet.*;

                                               importjavax.servlet.http.*;

                                               importjavax.servlet.jsp.*;

                                               importjava.lang.*

                                     除了以上的包,都需要在jsp显示导入!!!

                                     <%@pageimport="java.util.Date,java.text.*"%>

 

         pageEncoding="UTF-8": 服务器使用什么码表来翻译jsp文件

         contentType="text/html;charset=ISO-8859-1" 输出的类型和编码

                                     相当:response.setContentType("text/html;charset=xxxxx")

 

                   结论:在myecplise工具开发jsp的时候,只需要设置pageEncoding即可(因为保存文件的码表和contentType的码表都是参考pageEncoding的)

 

         errorPage="":jsp页面出错时跳转到哪个页面处理

         isErrorPage="false":指定当前页面是否是错误处理页面。

                                               true:是错误页面,可以获取错误信息

                                               false:不是错误页面,不可以获取错误信息

                   配置全局的错误页面:500和404

        

  <!-- 配置全局的错误处理页面 -->

  <error-page>

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

    <location>/common/error.jsp</location>

  </error-page>

  <error-page>

    <error-code>404</error-code>

    <location>/common/404.html</location>

  </error-page>

 

 

         buffer="8kb":设置jsp页面缓冲区大小

         注意:在jsp页面输出内容,尽量使用JspWriter的writer()方法输出,可以使用缓存机制

 

         session="true":是否开启HttpSession功能

         isELIgnored="false":是否忽略EL表达式

                                              ture:忽略

                                         false:不忽略

      2)@include指令:

         作用:用于包含其他页面

 

                   <%@includefile="/common/header.jsp" %>

      3)@taglib指令:

         先不讲,标签的时候讲

         作用:用于导入标签库

Jsp内置对象和域对象

Jsp内置对象

Jsp内置对象就是Jsp提前帮助开发者创建好的对象,这些对象方便开发者进行业务开发。

 

Jsp的哪些内置对象:一共9个

                   jsp对象            类型

                   request            HttpServletRequest  请求对象,用于获取请求数据

                   response     HttpServletResponse  响应对象,用于设置响应数据

                   session       HttpSession    会话对象,用于保存会话数据

         config      ServletConfig   servlet配置对象,用于读取servlet配置信息

        application   ServletContext servlet上下文对象,用于管理web应用(4个作用)

                   exception    Throwable   异常对象,用于封装异常信息的

                   out         JspWriter  缓存对象,用于缓存输出数据到页面

                  page         Object 当前翻译后的javae类对象,代表的是当前jsp页面

                   pageContext  PageContext     

 

PageContext对象

           1)可以取得其他8个内置对象的

                              pageContext.getRequest()

                              pageContext.getResponse()

                                     .......

 

                            publicvoid _jspService(){

                                     8个内置对象

                                     PageContextpageContext;

                                     pageContext.setRequest(xxx)                                    

                                     pageContext.setResponse(xxxx);

                            }

                            //标签时看到这个方法

                            publicvoid method(PageContext pageContext){

                                     通过PageContext取得8个,使用8个内置对象

                            }

        

        

           2)作为域对象使用

         域对象:

                            ServletContext

                            HttpServletRequest

                            HttpSession

                            PageContext

 

                   1)PageContext本身的域对象方法

                            setAttribute("name",Object)  保存数据到域对象

                            ObjectgetAttribute("name");          从域对象取出数据

                   2)PageContext可以操作其他三个域对象

                            setAttribute("name",Object,范围常量)

                       getAttribute("name",范围常量)

                   3)PageContext可以从四个域对象查询数据

                      findAttribute("name");

                            顺序:从小到大:page->request->session-application

 

                   范围常量:

                                     REQUEST_SCOPE 

                                     SESSSION_SCOPE

                                     APPLICATION_SCOPE                        

 

       Jsp的四个域对象

         共同点:

                            1)为了共享数据

                            2)方法:

                                               setAttribute()

                                               getAtribute()

 

         不同点:

         PageContext域对象:只能在当前jsp页面中使用

  HttpServletRequet域对象:只能在当前请求(1个请求)中使用

         HttpSession域对象:只能在当前会话(1个会话)中使用           

         ServletContext域对象:在当前web应用中使用

 

                   PageContext < HttpServletReques t<  HttpSession< ServletContext

                  

         建议:域对象的使用,能用小范围的使用小范围的

Jsp的最佳实践

servlet:  擅长写java逻辑代码,但不擅长输出html数据

jsp: 擅长输出html数据,但不擅长写java逻辑代码

 

项目开发:

                   1)提供输入数据的页面   (jsp)

                   2)接收用户的数据      (servlet)

                   3)处理业务逻辑,得到结果数据  (servlet)

                                     使用域对象传输数据

                   4)显示结果数据  (jsp)

                   5)跳转页面(转发或重定向)  (servlet)            

EL表达式

作用

EL表达式用于代替jsp表达式    <%=xxxx%>

为了jsp页面的简洁,使用EL表达式

作用: 输出域对象中的变量

 

EL表达式建议使用域对象进行数据共享

语法

         ${变量}

EL可以获取不同类型的数据

1)字符串: ${name}

2)对象: ${student.name}   .name 代表调用getName()方法

3)List或数组对象:  ${list[下标]}

4)Map集合对象: ${map[key]} 或者 ${map.key}

EL运算

算术运算: + - * /

比较运算: > >= <<=   ==   !=

逻辑运算: &&  ||   !

三目运算: (表达式)?true的结果 :false的结果

判空运算: empty

 

 


0 0
原创粉丝点击