Javaweb 第12天 JSP、EL技术
第12天 JSP、EL技术
今日任务:
- JSP技术入门和常用指令
- JSP的内置对象&标签介绍
- 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中可以写哪些注释?
- html注释
- css注释
- java注释
- js注释
- jsp注释
由于JSP中可以书写html、Java代码,因此在JSP中可以嵌入html注释,还可以嵌入Java注释,还可以书写JSP自己的注释
- html注释:<!—注释 -->
- java注释:Java的注释必须嵌入在上面介绍的三个脚本中,不能在jsp其他位置书写。
- 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》
学习一个类:
- 通过API文档找到相应的类
- 第一个要看的是构造方法(可以自己获取对象——注意:有些对象是服务器提供不能自己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个域对象(容器)中的设置数据
- 从其他的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表达式是什么:
- 在jsp中使用的技术
- 用来获取数据,主要是在上获取4个域对象(容器)(page、request、session、servletContext)中的数据
- 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、作业:
- 使用page指令导入自定义类(Person)——掌握page标签导入自定义类(10点积分)
- 在jsp页面书写java代码创建多个Person对象存入list集合——掌握jsp页面书写java代码(15点积分)
- 使用pageContext对象将数据存入session中——掌握pageContext对象获取其他内置对象和存取数据的功能(20点积分)
- 并使用EL表达式取出数据(显示姓名和年龄)——掌握使用EL表达式获取复杂数据(20点积分)
- 在jsp页面书写java代码,使用jsp内置对象:out,写一句人生或者学习的感悟(10点积分)
- 使用taglib指令导入jstl核心标签库,使用<c:set></c:set>标签向页面设置数据(数据为:当前项目路径)(15点积分)
- 每行代码都需要注释,正确使用注释(10点积分)
Javaweb 第12天 JSP、EL技术的更多相关文章
- JavaWeb之动态页面技术JSP/EL/JSTL
一.JSP技术 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> - ...
- 动态页面技术JSP/EL/JSTL
本节内容: jsp脚本和注释 jsp运行原理 jsp指令(3个) jsp内置/隐式对象(9个) jsp标签(动作) EL技术 JSTL技术 JavaEE的开发模式 动态页面技术:就是在html中嵌入j ...
- JavaEE之动态页面技术(JSP/EL/JSTL)
动态页面技术(JSP/EL/JSTL) JSP技术 jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%= ...
- JAVA基础之JSP与EL技术、JSTL技术
要牢记jsp四大作用域(pageContext域:当前jsp页面范围 request域:一次请求 session域:一次会话 application域:整个web应用)以及九大内置对 ...
- jsp基础、el技术、jstl标签、javaEE的开发模式
一.jsp技术基础 1.jsp脚本和注释 jsp脚本: 1)<%java代码%> ----- 内部的java代码翻译到service方法的内部 2)<%=java变量或表达式> ...
- JavaWeb之JSP & EL & JSTL
JSP & EL & JSTL JSP Java Server Page 什么是JSP 从用户角度看,就是一个网页.从程序员角度看,就是一个Java类,它继承Servlet,所以可以说 ...
- Jsp,EL表达式的入门
Jsp,EL表达式的入门 *Servlet/JSP 是两种动态的WEB资源的两种技术 使用Servlet生成HTML的页面是可以的 response.getWriter("<form ...
- Java使用JSP Tag Files & JSP EL Functions打造你自己的页面模板
1. 简单说明:在JSP 2.0后, 你不再需要大刀阔斧地定义一堆TagSupport或BodyTagSupport, 使用JSP Tag Files技术可以实现功能强大的页面模板技术. 在这里抛砖引 ...
- JavaWeb学习笔记六 JSP
JSP技术 JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java s ...
随机推荐
- java的return区别
return ;和return null的区别在于:前者当方法返回值为void时候,return ; 跳出方法. 后者当方法的返回值为object对象时,return null,跳出方法,返回值为空值 ...
- RedisDesktopManager
下载地址: https://github.com/uglide/RedisDesktopManager/releases
- <hdu - 1272> 小希的迷宫 并查集问题 (注意特殊情况)
本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1272 Problem Description: 上次Gardon的迷宫城堡小希玩了很久(见Probl ...
- js两种生成对象模式(公有成员和成员私有)
假设有个需求,创建一个book类,有isbn码,书名,作者 :可以对isbn进行数据完整性校验:--js设计模式 <script type="text/javascript" ...
- excel 导入 与 导出
Excel导入 public ActionResult Excel(HttpPostedFileBase file) { HttpPostedFileBase fi ...
- GraphLab介绍[转]
GraphLab介绍 原文链接:http://blog.jasonding.top/2015/06/08/Machine%20Learning/%E5%BC%80%E6%BA%90%E5%9B%BE% ...
- 【Python】协程实现生产者消费者模型
协程的实现为协作式而非抢占式的,这是和进程线程的最大区别.在Python中,利用yield和send可以很容易实现协程. 首先复习下生成器. 如果一个函数使用了yield语句,那么它就是一个生成器函数 ...
- 《Intel汇编第5版》 汇编拷贝字符串
一.字符串定义 二.dup指令 三.调用Writestring过程 四.代码以及效果 TITLE String Copy INCLUDE Irvine32.inc includelib Irvine3 ...
- Nginx redirect
if ($host != 'www.xxxxx.com' ) { rewrite ^/(.*)$ http://www.xxxx.com/$1 permanent; }
- Jdk 1.8*安装并配置
转载自:http://www.cnblogs.com/zlslch/p/5658399.html 简单说下,jdk1.8*的下载,见http://www.cnblogs.com/zlslch/p/5 ...