第12天 JSP、EL技术

今日任务:

  1. JSP技术入门和常用指令
  2. JSP的内置对象&标签介绍
  3. EL表达式&EL的内置对象

课堂笔记

1、JSP技术入门和常用指令

1.1、JSP的由来、脚本元素回顾

JSP:Java Server Page

JSP作用:页面上可以书写java代码

JSP在页面中可以书写__html、java、css、javascript_____代码。

复习JSP中的三种定义格式

1、脚本声明

格式:<%! 书写Java代码 %>

2、脚本表达式

格式:<%=表达式%>

3、脚本片段

格式:<% Java代码片段 %><% Java代码片段 %><% Java代码片段 %><% Java代码片段 %>

最后这些Java代码片段合并在一起必须是一个完成代码

代码演示:

<%-- 演示jsp书写java代码的三种方式 --%>

<%-- 书写java代码的三种方式,sun公司定义好的

Class Demo{

}

--%>

<%-- 脚本声明 --%>

<%-- 在脚本声明中定义的代码,会出现在.java文件的成员位置 --%>

<%! int i = 0; %>

<%-- 脚本表达式 --%>

<%-- 脚本表达式,他会直接,输出定义的内容(out.prin()) --%>

<%-- 在脚本表达式中定义的代码,在.java文件中 _jspService方法中 --%>

<%="上海传智播客" %>

<%-- 脚本片段 --%>

<%-- 在脚本片段中定义的代码,会出现在.java文件中 _jspService方法中 --%>

<% int x = 10; %>

<% int y = 100; %>

<%-- 通过源代码分析 jsp文件生成的java类继承了org.apache.jasper.runtime.HttpJspBase类,

org.apache.jasper.runtime.HttpJspBase这个类继承HttpServlet类,所以jsp说道底还是Servlet

--%>

Jsp源文件和java源文件,对应关系:

源代码文件:

在tomcat服务器下

C:\apache-tomcat-7.0.52\work\Catalina\localhost\itcast-jsp\org\apache\jsp

总结:jsp技术,底层还是用的是java类,他其实还是一个servlet

注意:如果当前jsp文件在被修改之后,没有显示出修改后的效果,那么删除work目录下的当前项目的jsp文件夹

1.2、JSP中注释

JSP中可以写哪些注释?

  1. html注释
  2. css注释
  3. java注释
  4. js注释
  5. jsp注释

由于JSP中可以书写html、Java代码,因此在JSP中可以嵌入html注释,还可以嵌入Java注释,还可以书写JSP自己的注释

  1. html注释:<!—注释 -->
  2. java注释:Java的注释必须嵌入在上面介绍的三个脚本中,不能在jsp其他位置书写。
  3. jsp自己的注释:<%-- 注释--%>

注释使用总结:

<%-- 演示在jsp文件中使用注释 --%>

<%-- 预期效果:html注释不会对java代码起作用,.java文件中依然会存在java代码(int i = 0;) --%>

<%-- html注释对java代码不起作用 --%>

<!-- <% int i = 0; %> -->

<%-- 预期效果:java的注释起作用,.java文件中不会存在注释的代码 --%>

<%-- java注释,会原封不动的出现在,.java文件中 --%>

<% // int x = 10; %>

<%-- jsp注释,不会出现在.java文件中 --%>

<%-- 注释那么多,我什么时候,用那个? --%>

<%-- 注释用来做什么?

给人看的,

注意:当我们需要在html文件中,看到注释,需要使用html注释

当我们需要在.java文件中,看到注释,需要使用java注释

当我们需要在jsp文件中,看到注释,需要使用jsp注释

--%>

注意:jsp注释在java文件中是没有的,jsp输出的html中没有java注释

注意:jsp文件底层对应的java类,只有访问后才会出现

1.3、JSP中的page指令(重点:必须掌握)

什么是指令?

就是一段代码(代码就一段文本)

为什么要学习page指令,page指令的功能是什么?

对jsp页面进行设置的指令(一段代码)。

补充:抽象的,不好理解的概念。

记住他的功能,而不是去理解他的文字意思。

什么样的代码是jsp中的指令?

格式为:<%@ 指令的名字 key=value key=value …….%>就是jsp指令

Key:属性名称

Value:属性值

Key和value值是用来设置jsp页面

例子:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

开始学习page指令(主要是学习指令中的key和value,它们是用来设置jsp的):

language="java" 声明当前jsp使用的编程语言,默认值是java(它现在也只支持java)

import="java.util.*" 导入要使用的包

哪些类是在util包中?

Date arraylist map 所有的集合框架

注意jsp有部分包不用手动导入:

pageEncoding="UTF-8":设置当前jsp源文件的编码表

contentType="text/html; charset=utf-8":设置浏览器解析html的编码表,有pageEncoding的情况可以不设置。

等于——Response.setcontentType("text/html;charset=utf-8")

errorPage="500.jsp": 设置在当前jsp页面发生异常后跳转那个页面(500.jsp)。

isELIgnored="true" 是否解析jsp中的EL表达式(${username})

isELIgnored="true"效果:

session="true"              设置在当前的页面中是否可以直接使用session对象(如果不设置,默认为true)

session="true"    效果:

isErrorPage="true" 设置当前的JSP页面是否是显示错误信息页面(500.jsp),如果是错误页面可以看到错误的信息(使用exception对象——jsp中的内置对象)

注意:内置对象——直接可以在jsp中使用的对象

演示错误信息显示:

注意:一般开发的时候,会把整个项目中的常见的错误处理配置到web.xml文件中

<!-- 配置错误页面 -->

<error-page>

<!-- 错误的响应码 -->

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

<!-- 要跳转的页面 -->

<location>/500.jsp</location>

</error-page>

效果:

学习page指令:就是学习其中key和value值起到的作用。

1.4、JSP中的include指令

JSP中的include指令作用:引入其他的页面合并成一个页面展示。这种引入方式称为静态引入。

资料演示:

应用场景:

一个网页,一般它的最顶部是一个页面,而最底部是一个页面,主体部分是另外一个页面

使用这个include指令三个jsp文件最终变成一个class文件,这样引入页面的方式叫做静态引入。

在运行之前,所有的代码已经写在.java源文件中

1.5、JSP中的taglib指令(重点:必须掌握)

taglib指令导入的已经定义好标签库或者函数库。

Taglib指令:是用来干嘛的?

将已经定义好的类(标签库或者函数库),导入到当前的jsp文件中,让我们可以使用。(相当于使用import关键字,可以导入其他已经定义好的java类)

为什么需要标签库和函数库? 方便前端和后端开发人员学习,可以使用同一种方式,开发jsp页面

页面由美工维护,美工不懂java代码,需要在jsp页面将java代码剔除,使用标签代替java代码,使用这些标签需要使用taglib指令来引入标签库

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%-- 演示taglib指令 --%>

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

<%-- taglib作用 :导入的已经定义好标签库或者函数库 --%>

<%-- prefix="c" : 给标签库或者函数库起一个短名称——小名 --%>

<%-- uri="http://java.sun.com/jsp/jstl/core" : 指定要导入那个标签库或者函数库

cn.itcast.sevlet.MyServlet:地址,文件路径

http://java.sun.com/jsp/jstl/core :地址,网址

--%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>My JSP 'index.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<%-- 使用jstl核心标签库,中的out标签 --%>

"></c:out>

</body>

</html>

效果:

在taglib指令中的属性:

uri:是当前标签对应的Java代码封装之后的名称空间——指定了一个网址,这个网址是用来确定,我们要引入的是那个标签库或者函数库

prefix:它是当前在页面上可以使用的标签的短名称——小名。

Taglib指令原理:本身jsp可以书写java代码,html、js、java在一个源文件上混杂一起维护不方便,所以将页面的java代码抽取成java类,然后将类配置到文件中,再在jsp页面上导入配置的java类,这样就可以以标签的方式使用定义好的java功能

2、JSP的内置对象&标签介绍

什么是内置对象:在jsp中能直接使用的对象就是jsp的内置对象。

内置对象在哪里?

Jsp底层实际上还是一个java类,可以在jsp中直接使用的,必然存在在jsp翻译后的java类中

JSP的内置对象9个:

这9个内置对象,已经掌握5个,可以在JSP翻译之后的对应的Java源代码的_jspService方法中找到:

HttpServletRequest request 它是请求

HttpServletResponse response 是响应

HttpSession session session 容器对象

ServletContext application 表示当前项目对象

ServletConfig config 专门获取当前这个Servlet的配置信息

Object page = this 它的表示是当前那个JSP页面对象。

后期虽然把它当作第四个容器(page、request、session、servletcontext)使用,但是他没有setAttribute(),它需要通过pageContext来帮助存取数据。

PageContext pageContext 它表示的是当前jsp页面的上下文对象。它的主要功能就是可以获取到JSP页面上的其他八个内置对象。

代码截图:

Throwable exception 主要是保存JSP页面上的异常信息的对象

代码截图:

JspWriter out 它相当于我们在Servlet中使用的response.getWriter

代码截图:

2.1、JSP的内置对象——page对象使用

在JSP页面中,由于page对象被提升成了Object类型。这个page在赋值的时候,赋值的this。

在JSP页面中我们经常把page当做javaweb中的第4个容器使用。

如果把page当做容器使用的时候,这时它中保存的内容只能在这个JSP页面中使用,在其他的地方无法使用。

为什么数据保存在page容器中,只能在当前jsp页面使用?

Page对象定义在——JspService()方法中,当方法进栈的时候,对象创建可以存取数据,当方法出栈的时候,page对象也随之消失,所以page中存放的数据只能在当前页面使用。

理解:因为page对象定义在_JSPService方法中,当方法执行完成之后,所有的局部变量都消失,所在page对象中保存的数据,只能在当前的jsp中使用。

总结:web中的四个域对象(容器对象)

Page(当前页面) < request(一次请求) < session(一次会话) < ServletContext(整个项目)

什么时候,使用page对象作为容器?

在当前页面使用,使用page容器

例如:商品详情数据,只需要在当前页面使用,用户选择其他商品的时候,应该显示其他商品

为什么request比page范围大?

Request.getrequestdispather("/index.jsp").forward(request,response);获取转发器之后,可以将存入请求对象的数据转发到index.jsp这个页面上。Request中存贮的数据,可以跨越一个servlet或者一个jsp。

但是page中存贮数据,只能在当前页面使用(没有数据转发的动作)。

2.2、JSP内置对象——pageContext使用

提示:如果需要知道tomcat如何运行,推荐《how tomcat work》

学习一个类:

  1. 通过API文档找到相应的类
  2. 第一个要看的是构造方法(可以自己获取对象——注意:有些对象是服务器提供不能自己new)

pageConext它是一个工具类,有三个功能:

1、获取jsp页面中的其他的8个内置对象

代码演示:

<%-- 获取其他八个内置对象 --%>

<%= pageContext.getException() %><br/>

<%= pageContext.getOut() %><br/>

<%= pageContext.getPage() %><br/>

<%= pageContext.getRequest() %><br/>

<%= pageContext.getResponse() %><br/>

<%= pageContext.getServletConfig() %><br/>

<%= pageContext.getServletContext() %><br/>

<%= pageContext.getSession() %><br/>

效果:

2、给其他4个域对象(容器)中的设置数据

  1. 从其他的4个容器中取出数据

<%-- 演示使用pageContext向四个容器中存放数据 --%>

<%=pageContext.PAGE_SCOPE %><br>

<% pageContext.setAttribute("username", "狗蛋", pageContext.PAGE_SCOPE); %>

<%=pageContext.REQUEST_SCOPE %><br>

<% pageContext.setAttribute("username", "狗剩", pageContext.REQUEST_SCOPE); %>

<%=pageContext.SESSION_SCOPE %><br>

<% pageContext.setAttribute("username", "铁柱", pageContext.SESSION_SCOPE); %>

<%=pageContext.APPLICATION_SCOPE %><br>

<% pageContext.setAttribute("username", "翠花", pageContext.APPLICATION_SCOPE); %>

<%-- 演示使用pageContext取出数据 --%>

<%= pageContext.getAttribute("username", pageContext.PAGE_SCOPE) %><br>

<%= pageContext.getAttribute("username", pageContext.REQUEST_SCOPE) %><br>

<%= pageContext.getAttribute("username", pageContext.SESSION_SCOPE) %><br>

<%= pageContext.getAttribute("username", pageContext.APPLICATION_SCOPE) %><br>

效果:

2. 3、JSP内置对象——out的使用

out它主要是用来把数据输出到页面。

<%-- 演示out对象向页面输出内容 --%>

<% out.write("人生真是一场艰难旅行"); %><br>

<% response.getWriter().write("人生真是充满了意外和惊吓<br>"); %>

<% out.write("人生真是寂寞如雪"); %>

效果:

数据最终是通过response对象输出到页面中,所以out缓冲区中的数据最终还是到response中,通过response对象输出。

2.4、JSP内置对象——exception对象

内置对象exception,在jsp页面上要能够使用exception内置对象,在jsp的page指令中,必须书写

isErrorPage=true,否则在页面上是无法使用exception内置对象。

谨记:不要把异常信息显示到JSP页面。一般异常需要在后台的Java代码处理完成, 如果真的有异常,就使用友好页面处理。

2.5、JSP的动作标签

JSP页面中是可以嵌入Java代码完成我们的业务逻辑,但是后期发现jsp页面出现多种代码开发和维护成本高(需要前端和java程序员同时在现场才能进行开发),所以后期开发中JSP页面中开始变成不写任何Java代码的。

而sun公司在JSP中给我们提供了一些内置的标签,可以代替Java代码。

2.6、jsp:include标签 动态引入

<%--

JSP中的内置标签:

jsp:include 它和 jsp的include指令功能相同

jsp:include内置的标签,它是动态的包含,当使用它引入多个JSP页面的时候,

在翻译引入的所有JSP为Java文件的时候,会翻译成不同的Java文件,只有在

程序运行的时候,才会把需要包含的内容引入进来。

jsp的include指令它是静态的包含在翻译的时候就把所有的JSP合并成一个Java程序

--%>

<%-- 演示include指令 --%>

<%-- 引入头页面 --%>

<%-- <%@ include file="head.jsp" %> --%>

<%-- 使用jsp标签引入页面 --%>

<jsp:include page="head.jsp"></jsp:include>

这是主页面:(新闻页面的主体,新闻部分)

<jsp:include page="foot.jsp"></jsp:include>

<%-- 引入尾页面 --%>

<%-- <%@ include file="foot.jsp" %> --%>

2.7、jsp:forward标签

它主要是起到我们在Servlet中学习的request的请求转发的作用。

<%-- 演示jsp froward标签 --%>

<jsp:forward page="index.jsp"></jsp:forward>

3、EL表达式&EL的内置对象(重点:必须掌握)

学习完struts2框架,struts2标签,ognl表达式,但是你还是必须要会使用EL表达式

EL表达式是什么:

  1. 在jsp中使用的技术
  2. 用来获取数据,主要是在上获取4个域对象(容器)(page、request、session、servletContext)中的数据
  3. EL表达式的书写格式:${ 表达式 }

3. 1、EL使用——获得四个容器(域对象)的数据

对应pageContext中的findAttribute()方法

<%-- 演示,从四个容器中获取数据 --%>

<% pageContext.setAttribute("addr", "海南", pageContext.PAGE_SCOPE); %>

<% pageContext.setAttribute("addr", "大理", pageContext.REQUEST_SCOPE); %>

<% pageContext.setAttribute("addr", "泰国", pageContext.SESSION_SCOPE); %>

<% pageContext.setAttribute("addr", "巴西", pageContext.APPLICATION_SCOPE); %>

${addr }

<%-- 如果需要从指定的容器中获取数据,使用容器相对应的EL内置对象 --%>

${pageScope.addr }

${requestScope.addr }

${sessionScope.addr }

${applicationScope.addr }

细节:使用pageContext的getAttribute方法或者findAttribute方法从4个范围中取出数据的时候,如果指定的key不存在会得到null,而使用el表达式取出的时候指定的key不存在,页面上什么都没有

代码演示:

效果:

3.2、EL获取复杂数据

复杂数据:数组,集合(List Map),自定义对象

<%-- 演示EL表达式获取复杂数据 --%>

<%-- 演示数组 --%>

<%

int[] arr = {111,222,33,4,55};

pageContext.setAttribute("arr", arr);

%>

${arr[0] }

${arr[1] }

${arr[2] }

${arr[3] }

<hr>

<%-- 演示集合(List) --%>

<%

List list = new ArrayList();

list.add("桂林米粉");

list.add("红烧肉");

list.add("咸鸭蛋");

list.add("爆炒腰花");

pageContext.setAttribute("list", list);

%>

${list }

${list[0] }

${list[1] }

${list[2] }

${list[3] }

<hr>

<%-- 演示集合(map) --%>

<%

Map map = new HashMap();

map.put("xln", "李若彤");

map.put("yg", "古天乐");

map.put("hr", "翁美玲");

map.put("gj", "黄日华");

map.put("t.l.b.b", "天龙八部");

pageContext.setAttribute("map", map);

%>

${map }

${map.xln }

${map.yg }

${map.hr }

${map.gj }

<%-- 注意,如果key中有点,使用中括号加双引号的方式获取数据 --%>

${map["t.l.b.b"] }

<hr>

<%-- 演示获取自定义对象的数据 --%>

<%

Person p = new Person();

p.setAge(1);

p.setName("娃娃");

pageContext.setAttribute("p", p);

%>

${p }

${p.age }

${p.name }

<%-- 可以使用点获取数据的对象,都可以使用中括号和双引号的方式获取数据 --%>

${p["age"] }

${p["name"] }

效果:

3. 3、EL使用——执行运算

已知的运算符号有哪些?

算术运算符:

+ - * / %

逻辑运算符:

& | ! ^

比较运算符:

< > <= >= != ==

数字格式化错误:EL取出来的数据无法转换成数字

EL表达式解析异常:无法解析"&"、"|"、"^",逻辑运算中,它只能支持"!"

<%-- 演示EL运算 --%>

<%

int x = 3;

int y = 4;

//数据使用EL表达式获取之后,都转成字符串的形式,如果执行运算,那么将字符串转成数字类型,然后再进行运算

//String y = "4g";

pageContext.setAttribute("x", x);

pageContext.setAttribute("y", y);

boolean info = true;

boolean flag = false;

pageContext.setAttribute("info", info);

pageContext.setAttribute("flag", flag);

%>

<%-- 算数运算 --%>

${x + y }

${x - y }

${x * y }

${x / y }

${x % y }

<hr>

<%-- 逻辑运算符 --%>

${ info}

${ flag}

<%-- 不支持& | ^运算 --%>

<%-- ${ info & flag} --%>

<%-- ${ info | flag} --%>

${ !info}

<%-- ${ info ^ flag} --%>

<hr>

<%-- 比较运算符 --%>

${x > y }

${x >= y }

${x < y }

${x <= y }

${x != y }

${x == y }

效果:

当算术运算的时候,如果字符串内容不能解析成数据,则报数字格式化异常。

3. 4、EL的11个内置对象使用

EL表达式它也有自己的内置对象可以直接在EL表达式中使用:

从不同的容器中取值

pageScope

requestScope

sessionScope

applicationScope

param 获取用户提交的某个数据(请求参数)

paramValues 获取某个key对应的多个value值(获取页面中checkbox)

header 获取请求头中的信息

headerValues 某个请求头中的多个value值

<%-- param——它相当于调用了request对象的getParamter() --%>

${param }<br><br>

<%-- paramValues 它相当于调用了request对象的getParamterValues()--%>

${paramValues }<br><br>

${paramValues.hobby[1]}<br><br>

<%-- header 相当于request.getHeader(arg0) --%>

${header }<br><br>

<%-- headerValues 相当于request.getHeaders(arg0) --%>

${headerValues }<br><br>

效果:

cookie它获取到的一个cookie数组,获取所有的cookie数据

<%-- ${cookie }获取了cookie数组,如果获取数组中的指定cookie,使用点名称的方式获取 --%>

${cookie }

${cookie.JSESSIONID.name }

${cookie.JSESSIONID.value }

效果:

pageContext 它就和JSP内置对象pageContext功能一致(获取其他内置对象)

<%-- 使用pageContext,获取了 request,调用request对象的方法--%>

${pageContext.request.contextPath}

效果:

initParam 获取的项目的全局配置参数。

配置代码

<!-- 设置项目的全局参数 -->

<context-param>

<param-name>sh</param-name>

<param-value>上海传智播客</param-value>

</context-param>

<context-param>

<param-name>wh</param-name>

<param-value>武汉传智播客</param-value>

</context-param>

页面代码:

效果:

jsp页面中的Java代码中可以直接使用的对象称为JSP的内置对象。<% 可以直接使用的对象 %>

EL表达式中11个内置对象,在书写的EL表达式中也可以直接去使用这些对象${ EL的内置对象}

3. 5、EL自定义函数(了解,补充内容)

需求: 当我们的文本中有小写字母的时候,给他变成大写

自定义EL函数:

1)要在jsp中使用

2)底层是一个Java类实现功能

实现步骤:

1)准备一个java类实现大小写转换功能

2)需要一个配置文件,告诉服务器调用那个类(java类)的那个方法来转换大小写。(类比servlet,web.xml)

3)需要将自定义函数引入到jsp页面中

底层java类:

package cn.itcast.myel;

public class MyEl {

//注意:设置方法的时候,一定要设置成静态的

public static String toUpperCase(String str){

//如果str是null 或则 "" ,返回空字符串

if(str == null || str.equals("")){

return "";

}

String upperCase = str.toUpperCase();

return upperCase;

}

}

Tld配置文件:

配置文件:

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

<taglib version="2.0" 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">

<tlib-version>1.0</tlib-version>

<short-name>m</short-name>

<uri>http://www.itcast.cn/myel</uri>

<!-- 注意:eclipse生成的文件有缺陷,需要手动不全地址http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd -->

<!-- 定义一个函数(EL自定义函数) -->

<function>

<!-- 方法的名称 -->

<name>toUpperCase</name>

<!-- 方法的底层类 -->

<function-class>cn.itcast.myel.MyEl</function-class>

<!-- 方法的底层实现 -->

<function-signature>java.lang.String toUpperCase(java.lang.String)</function-signature>

</function>

</taglib>

Jsp页面代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib prefix="m" uri="http://www.itcast.cn/myel"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>My JSP 'index.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

<meta http-equiv="description" content="This is my page">

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

${m:toUpperCase("abc")}

</body>

</html>

效果:

空指针异常:调用不到java类中的方法

4、作业:

  1. 使用page指令导入自定义类(Person)——掌握page标签导入自定义类(10点积分)
  2. 在jsp页面书写java代码创建多个Person对象存入list集合——掌握jsp页面书写java代码(15点积分)
  3. 使用pageContext对象将数据存入session中——掌握pageContext对象获取其他内置对象和存取数据的功能(20点积分)
  4. 并使用EL表达式取出数据(显示姓名和年龄)——掌握使用EL表达式获取复杂数据(20点积分)
  5. 在jsp页面书写java代码,使用jsp内置对象:out,写一句人生或者学习的感悟(10点积分)
  6. 使用taglib指令导入jstl核心标签库,使用<c:set></c:set>标签向页面设置数据(数据为:当前项目路径)(15点积分)
  7. 每行代码都需要注释,正确使用注释(10点积分)

Javaweb 第12天 JSP、EL技术的更多相关文章

  1. JavaWeb之动态页面技术JSP/EL/JSTL

    一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> - ...

  2. 动态页面技术JSP/EL/JSTL

    本节内容: jsp脚本和注释 jsp运行原理 jsp指令(3个) jsp内置/隐式对象(9个) jsp标签(动作) EL技术 JSTL技术 JavaEE的开发模式 动态页面技术:就是在html中嵌入j ...

  3. JavaEE之动态页面技术(JSP/EL/JSTL)

    动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%= ...

  4. JAVA基础之JSP与EL技术、JSTL技术

    要牢记jsp四大作用域(pageContext域:当前jsp页面范围      request域:一次请求   session域:一次会话   application域:整个web应用)以及九大内置对 ...

  5. jsp基础、el技术、jstl标签、javaEE的开发模式

    一.jsp技术基础 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ...

  6. JavaWeb之JSP & EL & JSTL

    JSP & EL & JSTL JSP Java Server Page 什么是JSP 从用户角度看,就是一个网页.从程序员角度看,就是一个Java类,它继承Servlet,所以可以说 ...

  7. Jsp,EL表达式的入门

    Jsp,EL表达式的入门 *Servlet/JSP 是两种动态的WEB资源的两种技术 使用Servlet生成HTML的页面是可以的 response.getWriter("<form ...

  8. Java使用JSP Tag Files & JSP EL Functions打造你自己的页面模板

    1. 简单说明:在JSP 2.0后, 你不再需要大刀阔斧地定义一堆TagSupport或BodyTagSupport, 使用JSP Tag Files技术可以实现功能强大的页面模板技术. 在这里抛砖引 ...

  9. JavaWeb学习笔记六 JSP

    JSP技术 JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java s ...

随机推荐

  1. java的return区别

    return ;和return null的区别在于:前者当方法返回值为void时候,return ; 跳出方法. 后者当方法的返回值为object对象时,return null,跳出方法,返回值为空值 ...

  2. RedisDesktopManager

    下载地址: https://github.com/uglide/RedisDesktopManager/releases

  3. <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)

     本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...

  4. js两种生成对象模式(公有成员和成员私有)

    假设有个需求,创建一个book类,有isbn码,书名,作者 :可以对isbn进行数据完整性校验:--js设计模式 <script type="text/javascript" ...

  5. excel 导入 与 导出

    Excel导入 public ActionResult Excel(HttpPostedFileBase file)        {            HttpPostedFileBase fi ...

  6. GraphLab介绍[转]

    GraphLab介绍 原文链接:http://blog.jasonding.top/2015/06/08/Machine%20Learning/%E5%BC%80%E6%BA%90%E5%9B%BE% ...

  7. 【Python】协程实现生产者消费者模型

    协程的实现为协作式而非抢占式的,这是和进程线程的最大区别.在Python中,利用yield和send可以很容易实现协程. 首先复习下生成器. 如果一个函数使用了yield语句,那么它就是一个生成器函数 ...

  8. 《Intel汇编第5版》 汇编拷贝字符串

    一.字符串定义 二.dup指令 三.调用Writestring过程 四.代码以及效果 TITLE String Copy INCLUDE Irvine32.inc includelib Irvine3 ...

  9. Nginx redirect

    if ($host != 'www.xxxxx.com' ) { rewrite ^/(.*)$ http://www.xxxx.com/$1 permanent; }

  10. Jdk 1.8*安装并配置

     转载自:http://www.cnblogs.com/zlslch/p/5658399.html 简单说下,jdk1.8*的下载,见http://www.cnblogs.com/zlslch/p/5 ...