jsp学习笔记

JSP技术】

JSP的概述:

JSPJavaServer Pages.

使用JSP:

    * JSP的脚本:

    * JSP的注释:

    * JSP的内置对象:

    * JSP的指令:

    * JSP的标签:


 JSP的脚本:

一种:<%! %> :翻译成Servlet内部的内容

二种:<%  %> :翻译成Servletservice方法内部东西.

三种:<%= %> :翻译成out.print();


JSP的执行原理:

JSP也会被翻译成Servlet.被编译成class.


 JSP的注释:

JSP支持三种注释:HTML的注释  Java代码注释  JSP的注释:


HTML的注释:

<!-- HTML的注释:可以存在JSP源码中,翻译成的Servlet中的注释也存在,HTML的代码中也会存在. -->


Java代码的注释

<%

    // 单行注释 可以存在于JSP源码中 在翻译成Servlet的时候,Java代码的注释也是会存在的.但是生成HTML的页面之后,注释就会消失了.

    /*

     多行注释

    */

    /**

    * 文档注释

    */

%>


JSP的注释

<%-- JSP的注释:只会存在于JSP的源代码中,当代表翻译成Servlet JSP的注释就消失了. --%>

JSP的指令:

JSP的指令:JSP中的三大指令。

语法:<%@ 指令的名称 属性名=”属性值属性名=”属性值”%>

* page指令:

     *language     :JSP的语言的属性.现在只能是java.

     * contentType  :设置浏览器默认的打开的时候的编码.

     * pageEncoding :设置JSP文件保存到硬盘,以及翻译成Servlet保存到硬盘的编码格式.

     * import       :设置JSP中引入其他的类.import属性可以出现多次的.

     *extends     :设置JSP被翻译成Servlet后继承的类:默认值:org.apache.jasper.runtime.HttpJspBase.修改这个值得话一定要使这个类是一个Servlet才可以.

     * autoFlush     :设置自动刷出缓存

     * buffer       :JSP的缓冲区的大小。默认8kb

     * session      :默认值是true.设置JSP的页面中是否可以直接使用session对象.

     * isELIgnored  :设置JSP是否忽略EL表达式.默认值false 不忽略.可以在JSP中写EL表达式.

     * isErrorPage  :设置JSP页面中出现错误信息应该如何处理的.

     *errorPage     :设置JSP页面中出现错误信息应该如何处理的.


* 设置全局错误页面:

  <error-page>

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

    <location>/404.jsp</location>

 </error-page>


 <error-page>

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

    <location>/500.jsp</location>

 </error-page>

 

* include指令:用于引入其他的页面

    * file属性:属性中不能使用变量,不能传递参数

      <%@include file="logo.jsp" %>

      <%@include file="menu.jsp" %>

      <h1>Body</h1>

      <%@include file="footer.jsp" %>


* taglib指令:用于在JSP中引入标签库

  <%@taglib uri="" prefix="" %>


 JSP的内置对象:

内置对象:JSP中可以直接使用的对象.

JSP的内置对象有哪些?常用的方法?真实对象是谁?

JSP中有9个内置对象:

* request                       HttpServletRequest                     getParameter(),setAttribute(),getAttribute();

* response                     HttpServletResponse                  setStatus(),sendRedirect(),getOutputStream();

* session                        HttpSession                                setAttribute(),getAttribute(),removeAttribute();

* application                  ServletContext                            setAttribute(),getAttribute(),removeAttribute();

* page                           Object                                          toString(),wait(),

* JSP翻译成Servlet的引用.

* pageContext                   PageContext                     setAttribute(),getAttribute(),removeAttribute();

* out                                  JspWriter                           write(),print(),

* config                             ServletConfig                     getInitParamter(),getInitParameterNames(),

* exception                       Throwable                          getMessage(),getCause()

* out对象:先将自身缓存区中的内容输出到response的缓冲区中,由response向页面作出响应.

     * out:JspWriter

     * response.getWriter() :PrintWriter

     * pageContext

     * 一类:用pageContext对象获得其他的8个内置对象.用来编写一个通用性高的或者框架的时候.

     * 二类:用来存取数据.向四个域中存取数据.


JSP的四个域对象:

* pageContext           pageScope               页面范围        

* request                   requestScope           请求范围

* session                   sessionScope            会话范围

* application            applicationScope       应用范围


JSP的动作标签:

语法:<jsp:动作标签 属性=””/>

为什么使用标签:简化代码的编写,尽量要少在JSP中使用<%%>

<jsp:forward />

    * 转发:<jsp:forwardpage="/demo1/demo5.jsp"></jsp:forward>

<jsp:include />

    * 包含:<jsp:includepage="/demo1/include2/logo.jsp"></jsp:include>


    ***** 静态包含 动态包含的区别?

    * 静态包含相对于代码的copy,最终被翻译成一个Servlet解释执行的.动态包含,包含其他页面的运行的结果.最终翻译成多个Servlet解释执行的.


EL表达式】

  EL:

EL:Expression Language.表达式语言.

语法:${ EL表达式 }

JSP中尽量少使用<%%>代码块.使用ELJSTL替换页面中<%%>

使用EL表达式:

用途:

1.获取数据.

2.EL执行运算

3.获得常用WEB开发的对象.

4.调用Java中的函数.


 EL用来获取数据:(获取是四个域范围中的值)

* 获得普通的值:

* 获得数组的数据:

* 获得List集合的数据:

* 获得Map集合的数据:


[]. 有什么区别?

[]获得带有下标的(数组,List .获得一个对象的属性,如果属性名中包含了特殊字符.必须使用[]不能使用.


<h1>EL获取数据</h1>

<%

    pageContext.setAttribute("pname","王守义");

    request.setAttribute("rname","王凤儿");

    session.setAttribute("sname","王如花");

    application.setAttribute("aname","王芙蓉");

%>


<h3>传统方式</h3>

<%=pageContext.getAttribute("pname")%>

<%= request.getAttribute("rname")%>

<%= session.getAttribute("sname")%>

<%=application.getAttribute("aname")%>


<h3>EL的方式</h3>

${ pageScope.pname }  

${ requestScope.rname }

${ sessionScope.sname }

${ applicationScope.aname }


<%

    //pageContext.setAttribute("name","王守义");

    //request.setAttribute("name","王凤儿");

    session.setAttribute("name","王如花");

    application.setAttribute("name","王芙蓉");

%>

${ name }


<h3>EL获得数组的数据</h3>

<%

    String[]arrs = {"王守义","王如花","王凤儿"};

    pageContext.setAttribute("arrs",arrs);

%>

${ arrs[1] }


<h3>EL获得List集合的数据</h3>

<%

    List<String>list = new ArrayList<String>();

    list.add("aaa");

    list.add("bbb");

    list.add("ccc");

    pageContext.setAttribute("list",list);

%>

${ list[1] }


<h3>获得Map集合的数据</h3>

<%

    Map<String,String>map = new HashMap<String,String>();

    map.put("aaa","111");

    map.put("bbb","222");

    map.put("ccc.ddd","333");

    pageContext.setAttribute("map",map);

%>

${ map["ccc.ddd"] }


<h3>EL获得JavaBean中的数据</h3>

<%

    Personperson = new Person();

    person.setId(1);

    person.setName("王美丽");

    pageContext.setAttribute("person",person);

%>

${ person.name }


EL执行运算:


执行算数运算:

+ - * / %

执行逻辑运算:

> < >= <= != ==

执行关系运算:

&& || !

 

<h1>EL执行运算</h1>

<h3>EL执行算数运算</h3>

<%

    pageContext.setAttribute("n1","10");

    pageContext.setAttribute("n2","20");

    pageContext.setAttribute("n3","40");

    pageContext.setAttribute("n4","60");

%>

${ n1+n2+n3 }


<h3>EL执行逻辑运算</h3>

${ n1 < n2 }

${ n1 > n2 }

<h3>EL执行关系运算</h3>

${ n1<n2 && n3<n4 }

${ n1<n2 || n3<n4 }


<%

    Personperson = new Person();

    pageContext.setAttribute("person",person);

%>

${ empty person }

${ not empty person }


 EL获得WEB开发的常用的对象:(EL的内置对象)

EL常用的对象:11.

${pageScope}

${requestScope}

${sessionScope}

${applicationScope}

${ param }          :相当于request.getParameter();

${ paramValues }    :相当于request.getParameterValues();

${ header }         :获得请求头 一个key对应一个value

${ headerValues }   :获得请求头 一个key对应多个value

${ initParam }      :获得初始化参数

${ cookie }         :获得Cookie的信息

${pageContext}      :相当于pageContext对象.

 

JSTL标签库】

 JSTL的标签库概述:

JSTLJSPStandard Tag LibraryJSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apachejakarta小组来维护的。JSTL只能运行在支持JSP1.2Servlet2.3规范的容器上,如tomcat 4.x。在JSP 2.0中也是作为标准支持的。

 

作用:结合EL替换页面中的<% %>


使用JSTL的标签库:

JSTL的五大标签库:corefmtxmlsqlfn

JSTL的版本:JSTL1.0  JSTL1.1 JSTL1.2

* JSTL1.0EL还没有被纳入规范的时候使用标签.

* JSTL1.11.2的版本中 EL已经被纳入到规范中.JSTL可以支持EL表达式了.

步骤一:引入标签库.

<%@ tagliburi="http://java.sun.com/jsp/jstl/core" prefix="c" %>

常用的标签:

c:set

c:if

c:forEach

c:choose

    * c:when

    *c:otherwise


 JSTL的函数库(EL的函数库)

<%@ tagliburi="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

${ fn:length("HelloWorld") }

${ fn:toLowerCase("ABCDEFG") }

${ fn:toUpperCase("abcdefg") }

${ fn:contains("www.baidu.com","baidu")}


【JSP的模式】

Model1:JSP+JavaBean 比较适合开发一些小应用.

Model2:JSP+Servlet+JavaBean 可以开发任何一个应用. MVC设计模式:


【MVC设计模式】

MVC是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。


【EE开发中的三层结构】

JavaEE开发中通常将一个应用分成:WEB层,业务层,持久层

 

【JavaBean】

JavaBean:JavaBean就是一个满足的特定格式要求的Java类.

* 有一个无参数的构造:

* 属性私有

* 私有属性提供public的get或set方法.

 




  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值