参考文献:http://www.runoob.com/jsp/jsp-tutorial.html
eclipse运行JSP
- 先配置环境
创建一个动态项目
File-->New-->Dynamic Web Project
WebContent文件夹下新建一个
标签内添加index.jsp
在1
2
3<%
out.println("Hello World!");
%>Window-->Web Browser
修改为1默认浏览器run as
运行即可
JSP处理过程
- 浏览器发送一个 HTTP 请求给服务器。
- Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给
JSP 引擎
。通过使用 URL或者.jsp
文件来完成。 - JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为
Servlet
。这种转化只是简单地将所有模板文本改用println()
语句,并且将所有的JSP 元素
转化成Java 代码
。 JSP 引擎
将Servlet
编译成可执行类,并且将原始请求传递给Servlet 引擎
。- Web 服务器的某组件将会调用
Servlet 引擎
,然后载入并执行Servlet 类
。在执行过程中,Servlet 产生HTML 格式
的输出并将其内嵌于HTTP response
中上交给 Web 服务器。 - Web 服务器以静态 HTML 网页的形式将
HTTP response
返回到浏览器中。 - 最终,Web 浏览器处理
HTTP response
中动态产生的HTML网页,就好像在处理静态网页一样。
JSP语法
- 脚本程序:
<% 代码片段 %>
- JSP声明:
<%! declaration; [ declaration; ]+ ... %>
(<%! int a, b, c; %> ) - JSP表达式:
<%= 表达式 %>
- JSP注释:
<%-- 注释 --%>
,<!-- 注释 -->
JSP指令:
<%@ directive attribute="value" %>
1
2
3<%@ page ... %> #定义页面的依赖属性,比如脚本语言、error页面、缓存需求
<%@ include ... %> #包含其他文件
<%@ taglib ... %> #引入标签库的定义,可以是自定义标签JSP行为:
<jsp:action_name attribute="value" />
1
2
3
4
5
6
7
8
9
10jsp:include #用于在当前页面中包含静态或动态资源
jsp:useBean #寻找和初始化一个JavaBean组件
jsp:setProperty #设置 JavaBean组件的值
jsp:getProperty #将 JavaBean组件的值插入到 output中
jsp:forward #从一个JSP文件向另一个文件传递一个包含用户请求的request对象
jsp:plugin #用于在生成的HTML页面中包含Applet和JavaBean对象
jsp:element #动态创建一个XML元素
jsp:attribute #定义动态创建的XML元素的属性
jsp:body #定义动态创建的XML元素的主体
jsp:text #用于封装模板数据JSP隐含对象
1
2
3
4
5
6
7
8
9request #HttpServletRequest类的实例
response #HttpServletResponse类的实例
out #PrintWriter类的实例,用于把结果输出至网页上
session #HttpSession类的实例
application #ServletContext类的实例,与应用上下文有关
config #ServletConfig类的实例
pageContext #PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
page #类似于Java类中的this关键字
Exception #Exception类的对象,代表发生错误的JSP页面中对应的异常对象
JSP实例
生命周期实例
1 | <%@ page language="java" contentType="text/html; charset=UTF-8" |
- 访问
http://localhost:8080/test/Life.jsp
得到
jsp连接数据库
查询数据
- index.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"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head></head>
<body>
<sql:setDataSource var="snapshot" driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://localhost:3306/jsp?serverTimezone=GMT%2B8"
user="root" password="root"/>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from websites;
</sql:query>
<h1>JSP 数据库实例</h1>
<table border="1" width="100%">
<tr>
<th>ID</th>
<th>站点名</th>
<th>站点地址</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
<td><c:out value="${row.id}"/></td>
<td><c:out value="${row.name}"/></td>
<td><c:out value="${row.url}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>
PS:需导入jar包:mysql-connector-java-8.0.11.jar
和jstl-1.2.jar
(放在项目的lib目录
),一定要注意jar包的版本,不同的版本语法不一样
插入数据1
2
3<sql:update dataSource="${snapshot}" var="result">
INSERT INTO websites (name,url,alexa,country) VALUES ('百度', 'http://www.baidu.com', 5093, 'CN');
</sql:update>
删除数据1
2
3
4<sql:update dataSource="${snapshot}" var="count">
DELETE FROM websites WHERE Id = ?
<sql:param value="${11}" />
</sql:update>
修改数据1
2
3
4
5<c:set var="SiteId" value="3"/>
<sql:update dataSource="${snapshot}" var="count">
UPDATE websites SET name = '谷歌' WHERE Id = ?
<sql:param value="${SiteId}" />
</sql:update>