`
Mr.Zero
  • 浏览: 33441 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

jsp&EL

 
阅读更多
一、jsp

1、为什么用jsp?

servlet做界面显示,代码编写麻烦、可读性差、不易维护,所以把显示部分的代码放到jsp中编写。

2、jsp的实质

jsp是一个servlet,用户第一次请求到达时,jsp被翻译成servlet,以后就用这个servlet响应用户请求。要想知道jsp被翻译成什么样的servlet,可以查看tomcat——》work目录下相应的.java文件。

3、jsp语法

× 一般语句都是放在<%  %>里,<%   %>中的语句可以不完整,但整体必须完整,例如

<%

     for(){

%>

<p>jljljl</p>

<%

    }

%>

× 声明方法语句为

<%!

//方法

%>



× 动作指令

三个关键字:<%@ page %>  <%@ taglib %>   <%@ page %>

NO1:page

<%@ page  language="java" import="java.util.*" pageEncoding="UTF-8"
  buffer="8kb" contentType="text/html; charset=UTF-8"
deferredSyntaxAllowedAsLiteral="false" errorPage="" extends="" isELIgnored="false"
session="true"
%>

NO2:included

<%@ include file="/2.jsp" %>

****** 静态包含和动态包含*****************

静态包含把所有的页面解释到一个servlet中,动态包含在遇到包含语句时才解析页面并包含到主页面中。

NO3:

4、jsp简单标签

<jsp:useBean>

<jsp:useBean id="calculator" class="cn.itcast.CalculatorBean" scope="page"/>//查看翻译后的servlet代码,观察其情况//////
<jsp:setProperty property="*" name="calculator"/>

<jsp:include>

<jsp:forward>

5、jsp调试

三种错误:jsp语法错误、java语法错误、翻译成的servlet出错。前两种比较好解决,根据错误提示即可。后面一种错误需要结合翻译后的xervlet进行排查错误,非常不好解决。



二、EL

1、jsp对程序员编写代码来说还不是很方便,因此sun公司又提供了一套编写代码的程序,就是EL。运用EL表达式可以方便地对数据进行处理。

2、EL实质也会被翻译成servlet代码,具体翻译成什么样可以参看翻译后的servlet。

3、EL语法

${username }相当于<%=pageContext.findAttribute("username") %>依次在page request session application域中查找username属性,查到即止,查不到返回“”。

××××EL表达式取得数据的方式×××××××

<br />
  -------------------取出普通值-----------------------------
  <br />
  <%
   request.setAttribute("username", "aaaaa");
  %>
  ${username }<%=pageContext.findAttribute("username")%>
  <br />
  ------------------取出对象值------------------------------
  <br />

  <jsp:useBean id="person" class="cn.itcast.el.Person" />
  <jsp:setProperty name="person" property="name" value="bbb" />
  ${person.name }
  <br />
  ------------------取出list对象值------------------------------
  <br />

  <%
   Person person1 = new Person();
   person1.setName("aaaa");
   Person person2 = new Person();
   person2.setName("bbb");
   List lists = new ArrayList();
   lists.add(person1);
   lists.add(person2);
   pageContext.setAttribute("list", lists);
  %>
  ${list[1].name}
 
  ------------------取出map对象值------------------------------
  <br />

  <%
   Person person11 = new Person();
   person11.setName("aaaa");
   Person person22 = new Person();
   person22.setName("bbb");
   Map map = new HashMap();
   map.put("aaa",person11);
   map.put("bbb",person22);
   pageContext.setAttribute("map", map);
  %>
  ${map.aaa.name}

4、EL内置对象

pageScope

requestScope

sessionScope

applicationScope

servletContext

。。。。。

5、自定义函数

步骤:

1)、定义一个静态的方法

2)、定义配置文件.tld,放在WEB-INF目录下

3)、在jsp页面导入标签,方法如下:

<%@ taglib uri="/xyy" prefix="xyy"  %>prefix的属性随便取,uri的值根据tld文件配置取,tld模板如下

<?xml version="1.0" encoding="UTF-8" ?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">


<description>
  A tag library exercising SimpleTag handlers.
</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>/xyy</uri>

<function>
  <name>add</name>
  <function-class>cn.itcast.el.Demo</function-class>
  <function-signature>
   java.lang.String add( java.lang.String,java.lang.String )
  </function-signature>
</function>
</taglib>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics