我記得在很久很久以前答倡,只有JSP,沒有什么javabean沒有jstl幔嫂,沒有框架辆它。jsp的誕生是為了應(yīng)對asp,所以jsp就顯得很簡單婉烟,編寫完往上一拖刷新就可以執(zhí)行了娩井。不過jsp是編譯性的腳本,需要先編譯成對應(yīng)servlet似袁,然后再在web容器內(nèi)運(yùn)行洞辣。asp是解釋性語言咐刨,基于web服務(wù)器比如iis,解釋執(zhí)行的扬霜,只有在執(zhí)行時才能發(fā)現(xiàn)錯誤定鸟。
**
先講講jsp內(nèi)置對象,很關(guān)鍵著瓶,也很有用:**
- request:提交后服務(wù)器端進(jìn)行參數(shù)獲取
- response:服務(wù)器端把數(shù)據(jù)返回至瀏覽器等
- session:服務(wù)器端會話等信息
- out:頁面輸出字符串等
- application:獲取服務(wù)器端的參數(shù)
- ...
上面這幾個最常用联予,尤其是前四個,哪個項目都會用到材原,務(wù)必掌握清楚沸久。后續(xù)講各個項目時會依次講到這些。
編寫了一個簡單的例子余蟹,算是憶往昔卷胯,崢嶸歲月愁吧。純jsp 的網(wǎng)站我現(xiàn)在還保留著好幾個威酒,當(dāng)時真是勇氣可嘉窑睁,竟然把jsp當(dāng)成一門語言學(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容器進(jìn)行解析司澎,編譯成servlet欺缘,再執(zhí)行,效率很低
- jsp展示和連庫等邏輯耦合在一起挤安,改起來很麻煩