我記得在很久很久以前,只有JSP,沒有什么javabean沒有jstl,沒有框架。jsp的誕生是為了應(yīng)對asp,所以jsp就顯得很簡單,編寫完往上一拖刷新就可以執(zhí)行了。不過jsp是編譯性的腳本,需要先編譯成對應(yīng)servlet,然后再在web容器內(nèi)運行。asp是解釋性語言,基于web服務(wù)器比如iis,解釋執(zhí)行的,只有在執(zhí)行時才能發(fā)現(xiàn)錯誤。
**
先講講jsp內(nèi)置對象,很關(guān)鍵,也很有用:**
- request:提交后服務(wù)器端進行參數(shù)獲取
- response:服務(wù)器端把數(shù)據(jù)返回至瀏覽器等
- session:服務(wù)器端會話等信息
- out:頁面輸出字符串等
- application:獲取服務(wù)器端的參數(shù)
- ...
上面這幾個最常用,尤其是前四個,哪個項目都會用到,務(wù)必掌握清楚。后續(xù)講各個項目時會依次講到這些。
編寫了一個簡單的例子,算是憶往昔,崢嶸歲月愁吧。純jsp 的網(wǎng)站我現(xiàn)在還保留著好幾個,當時真是勇氣可嘉,竟然把jsp當成一門語言學(xué)了。
首先新建一個web工程,
idea結(jié)構(gòu)圖.png
工程結(jié)構(gòu)如上圖所示。
只需要加一個mysql的依賴包,在
pom.xml
增加:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
新建了三個jsp文件,一個是list.jsp,用于員工列表,一個是add.jsp,用于新增員工,一個是add_do.jsp,用于執(zhí)行新增。
list.jsp
:
<%@page import="java.sql.*"%>
<%@ 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>
員工列表
<a href="add.jsp"> 新增</a>
<br />
<table border="1">
<tr>
<td>編號</td>
<td>姓名</td>
</tr>
<%
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");//指定連接類型
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/test", "root", "root");//獲取連接
} catch (Exception e) {
e.printStackTrace();
}
PreparedStatement pstmt = conn.prepareStatement("select * from staff");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
<%
}
conn.close();
%>
</table>
</body>
</html>
add.jsp
:
<%@ 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>
新增員工
<form action="add_do.jsp" method="post">
姓名:<input type="text" name="name"><br> <input
type="submit" value="保存">
</form>
</body>
</html>
add_do.jsp
:
<%@page import="java.sql.*"%>
<%@ 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>
<%
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");//指定連接類型
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/px", "root", "root");//獲取連接
} catch (Exception e) {
e.printStackTrace();
}
String name = request.getParameter("name");
PreparedStatement pstmt = conn.prepareStatement("insert into staff(name) values(?)");
pstmt.setString(1, name);
pstmt.executeUpdate();
conn.close();
response.sendRedirect("list.jsp");
%>
</body>
</html>
純jsp工程的問題
- 代碼不能重用,比如連庫,用到的地方都得重新寫一遍,很麻煩
- 沒有javabean,所有代碼都需要先在web容器進行解析,編譯成servlet,再執(zhí)行,效率很低
- jsp展示和連庫等邏輯耦合在一起,改起來很麻煩