Fork me on GitHub

JSP入门

参考文献: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
    10
    jsp: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
    9
    request	  #HttpServletRequest类的实例
    response #HttpServletResponse类的实例
    out #PrintWriter类的实例,用于把结果输出至网页上
    session #HttpSession类的实例
    application #ServletContext类的实例,与应用上下文有关
    config #ServletConfig类的实例
    pageContext #PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问
    page #类似于Java类中的this关键字
    Exception #Exception类的对象,代表发生错误的JSP页面中对应的异常对象

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%!
private int initVar=0;
private int serviceVar=0;
private int destroyVar=0;
%>
<%!
public void jspInit(){
initVar++;
System.out.println("jspInit(): JSP被初始化了"+initVar+"次");
}
public void jspDestroy(){
destroyVar++;
System.out.println("jspDestroy(): JSP被销毁了"+destroyVar+"次");
}
%>
<%
serviceVar++;
System.out.println("_jspService(): JSP共响应了"+serviceVar+"次请求");
String content1="初始化次数 : "+initVar;
String content2="响应客户请求次数 : "+serviceVar;
String content3="销毁次数 : "+destroyVar;
%>
<h1>JSP 测试实例</h1>
<p><%=content1 %></p>
<p><%=content2 %></p>
<p><%=content3 %></p>
</body>
</html>
  • 访问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.jarjstl-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>

-------------本文结束感谢您的阅读-------------