javaBean
在Eclipse中创建一个名为chapterO7的Web项目,然后在项目的src目录下创建包pidan.servlet,
在包中创建一个用于存储用户名和密码的类MyServlet

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package baixiao.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* Servlet implementation class MyServlet
*/
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setAttribute("username", "dashuju");

request.setAttribute("password", "123456");

RequestDispatcher dis=request.getRequestDispatcher("/myjsp.jsp");
dis.forward(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}****

然后,在WebContent目录下编写一个名为myjsp的JSP文件,使用该文件来输出MyServlet所存储的信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
**<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%=(String) request.getAttribute("username") %><br/>
<%=(String) request.getAttribute("password") %><br/>

<hr/>
使用EL表达式:<br />
${username}<br />
${password}<br />
</body>
</html>**

最后,部署Web项目chapter07,启动Tomcat 服务器,在浏览器访问MyServlet页面

在项目的WebContent目录下,新建一个名为scopes.jsp的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% pageContext.setAttribute("userName","HYS"); %>
<% request.setAttribute("bookName","dashuju2004"); %>
<% session.setAttribute("userName","Java Web"); %>
<% application.setAttribute("bookName", "Java 基础"); %>
${pageScope.userName }<br />
${requestScope.bookName }<br />
${sessionScope.userName }<br />
${applicationScope.bookName }<br />
${userName }
</body>
</html>

启动Tomcat 服务 器, 在浏览器访问scopes.jsp页面
在项目的WebContent目录下,新建一个名为param.jsp的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/param.jsp">
num1: <input type="text" name="num1"><br />
num2: <input type="text" name="num"><br />
num3: <input type="text" name="num"><br /> <br />
<input type="submit"value="提交"/>&nbsp;&nbsp;
<input type="submit"value="重置"/><hr/>
num1: ${param.num1}<br />
num2: ${paramValues.num[0]}<br />
num3: ${paramValues.num[1]}<br />
</form>
</body>
</html>

启动Tomcat 服务器,在浏览器访问param.jsp页面,浏览器窗口中会显示一个表单,在这个表单中输入3个数字,分别为10、20、30,然后单击【提交】按钮

在项目的WebContent目录下,新建一个名为cookie.jsp的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% response.addCookie(new Cookie("uesrName","pidan")); %>
Cookie对象的信息:<br />
${cookie.userName }<br />
Cookie对象的名称和值:<br />
${cookie.userName.name }=${cookie.userName.value }

</body>
</html>**

启动Tomcat服务器,在浏览器访问cookie.jsp页面,由于是浏览器第1次访问cookie.jsp页面,
此时,服务器还没有接收到名为userName的Cookie信息,因此,浏览器窗口中不会显示 。
接下来刷新浏览器, 第2次访问cookie.jsp页面

在chapterO7项目的WebContent目录下创建一个名为c_out1.jsp的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--第1个out标签--%>
userName属性的值为:
<c:out value="${param.username}" default="unknown"/><br />
<%--第2个out标签--%>
userName属性的值为:
<c:out value="${param.username}">
unknown
</c:out>
</body>
</html>****

<c:forEach>标签

var属性用于指定将当前迭代到的元素保存到page域中的名称。
items属性用于指定将要迭代的集合对象。
varStatus属性用于指定当前迭代状态信息的对象保存到page域中的名称。
begin属性用于指定从集合中第几个元素开始进行迭代,begin的索引值从0开始。如果没有指定items属性,就从begin指定的值开始迭代,直到迭代结束为止。
step属性用于指定迭代的步长,即迭代因子的增量。

在项目的WebContent目录下,创建一个名为c_foreach1.jsp的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
**<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String[] fruits ={"apple","orange","grape","banana"};
request.setAttribute("ff", fruits);
%>
String数组中的元素:
<br />
<c:forEach var="name" items="<%=fruits %>">
${name}<br />
</c:forEach>
<%
Map userMap = new HashMap();
userMap.put("Tom","123");
userMap.put("Make","123");
userMap.put("Lina","123");
request.setAttribute("map", userMap);
%>
<hr />
HashMap集合中的元素:
<br />
<c:forEach var="entry" items="<%=userMap %>">
key:${entry.key}-------${entry.value}<br />
</c:forEach>
</body>
</html>**

启动Tomcat服务器,在浏览器访问c_foreach1.jsp页面

在项目的WebContent目录下,创建一个名为c_foreach2.jsp的文件,该文件中使用了
<c:forEach>标签的begin、end和step属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
colorsList集合(指定迭代范围和步长)
<br />
<% List colorsList=new ArrayList();
colorsList.add("red");
colorsList.add("yellow");
colorsList.add("blue");
colorsList.add("green");
colorsList.add("black");
colorsList.add("gray");
request.setAttribute("list", colorsList);
%>
<c:forEach var="aa" items="${list }" begin="0" end="5" step="2">
${aa}&nbsp;
</c:forEach>
</body>
</html>

<c:forEach>标签的varStatus属性用于设置一个javax.servlet.jsp.jstl.core.LoopTagStatus类型的变量,这个变量包含了从集合中取出元素的状态信息。使用<c:forEach>标签的varStatus属性可以获取以下信息。

count:表示元素在集合中的序号,从1开始计数。
index:表示当前元素在集合中的索引,从0开始计数。
first:表示当前是否为集合中的第1个元素。
last:表示当前是否为集合中的最后一个元素。

在项目的WebContent目录下,创建一个名为c_foreach3.jsp的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body style="text-align: center">
<%
List userList = new ArrayList();
userList.add("Tom");
userList.add("Make");
userList.add("Lina");
request.setAttribute("users",userList);
%>

<table border="1">
<tr>
<td>序号</td>
<td>索引</td>
<td>是否为第一个索引</td>
<td>是否为最后一个索引</td>
<td>元素的值</td>
</tr>
<!-- varStatus属性 -->
<c:forEach var="bb" items="${users }" varStatus="vv">
<tr>
<td>${vv.count}</td>
<td>${vv.index}</td>
<td>${vv.first }</td>
<td>${vv.last }</td>
<td>${bb }</td>
</tr>
</c:forEach>
</table>
</body>
</html>

<c:url>标签

value属性用于指定构造的URL。
context属性用于指定导入同一个服务器下其他Web应用的名称。
var属性用于指定将构造的URL地址保存到域对象的属性名称。
scope属性用于指定将构造好的URL保存到域对象中。

在项目的WebContent目录下新建一个名为c_url.jsp的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
使用绝对路径构造URL:<br />
<c:url var="absoulateURL" value="http://localhost:8888/chapter07/login.html">
<c:param name="username" value="张三"></c:param>
<c:param name="country" value="中国"></c:param>
</c:url>
<a href="${absoulateURL }">绝对路径登录页面</a>
<hr />
使用相对路径:<br />
<c:url var="risistURL" value="login.html?username=张三&country=中国"></c:url>
<a href="${risistURL }">相对路径登录页面</a>
</body>
</html>

本章主要讲解了JavaBean、BeanUtils工具、EL表达式的基本语法、常见EL表达式隐式对象、JSTL的下载和使用以及JSTL常见标签库等知识。
通过本章的学习,读者能够了解什么是JavaBean,什么是EL表达式和JSTL,可以熟练地掌握通过BeanUtils工具访问JavaBean、EL表达式的基本语法的格式、
EL的常见隐式对象以及JSTL中的常见Core标签库等操作。