eclipse创建一个Web Project,
①如果要连接MySQL数据库,在项目中WebContent>>WEB-INF>>lib中粘贴mysql-connector-java-XXXXX-bin.jar
②如果在eclipse中的JSP文件第一行出现The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path错误提示,如果只是运行jsp,不创建Servlet文件,可以不用理会该错误提示;
如果创建Servlet,在项目中WebContent>>WEB-INF>>lib中粘贴servlet-api.jar(此架包是在tomcat文件夹下的lib文件夹中复制的)
③在关闭数据库连接后,仍需使用连接关闭前的结果集中的数据,我们就需要使用一个API,将结果集中的数据转存到基于内存的结果集中,这样关闭数据库连接也可以获取数据。为了使用这个API,需要在项目中WebContent>>WEB-INF>>lib中粘贴rt.jar(此架包是在JDK安装路径下的jre文件夹中的lib文件夹下)
有的eclipse版本粘贴在lib下还不行,右击项目>>选择Build Path>>Configure Build Path…>>Libraries,选中Libraries中的JRE System Library,点击Remove,最后保存
/**
* rt.jar中API的使用
*/
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
CachedRowSet crs = null;//基于内存的结果集
crs = new CachedRowSetImpl();
crs.populate(rs);//将结果集中的数据转存到基于内存的结果集中
/**
* Java对数据库进行的增删改查操作中的代码有很多相同的代码
* 为了使代码简洁,我们将其中的一些相同代码提取到一个单独的Java文件中
* 我们只需要在一个Java文件中写SQL语句,并且继承上面那个单独的class文件
*/
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.rowset.CachedRowSet;
import com.sun.rowset.CachedRowSetImpl;
public class BaseDao {
/**
* 更新数据
* @param 更新sql语句
* @param 更新数据的参数
* @throws SQLException
*/
public void updateData(String sql,Object...parameters) throws SQLException {
Connection conn = null;
try {
conn = JdbcUtil.getConn();
PreparedStatement pstmt = conn.prepareStatement(sql);
for(int i=0;i<parameters.length;i++) {
pstmt.setObject(i+1, parameters[i]);//给问号
}
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
throw e;
} finally {
JdbcUtil.closeConn(conn);
}
}
/**
*
* @param sql
* @param parameters
* @return
* @throws SQLException
*/
public ResultSet findData(String sql,Object...parameters) throws SQLException {
ResultSet rs = null;
Connection conn = null;
CachedRowSet crs = null;//基于内存的结果集
try {
crs = new CachedRowSetImpl();
conn = JdbcUtil.getConn();
PreparedStatement pstmt = conn.prepareStatement(sql);
if(parameters != null) {
for(int i=0; i<parameters.length; i++) {
pstmt.setObject(i+1, parameters[i]);
}
}
rs = pstmt.executeQuery();
crs.populate(rs);//将结果集中的数据转存到基于内存的结果集中
} catch (SQLException e) {
e.printStackTrace();
throw e;
} finally {
JdbcUtil.closeConn(conn);
}
return crs;
}
}
④在项目中WebContent>>WEB-INF>>lib中粘贴jstl.jar和standard.jar架包,使用该架包可以简化或代替JSP文件中的Java语句及其书写方式。
对比下面代码:
<%@ page import="cn.tedu.ums.entity.User" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html; charset=utf-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<h1>用户账号列表</h1>
<hr>
<%
List<User> list = (List<User>)request.getAttribute("list");
int maxPage = (Integer)request.getAttribute("maxPage");
for(User u : list){ %>
编号:<%=u.getId() %><br>
账号:<%=u.getUserName() %><br>
邮箱:<%=u.getEmail() %><br>
电话:<%=u.getPhone() %><br>
<hr>
<% }
for(int i=1;i<=maxPage;i++){ %>
<a href="findUser.do?page=<%=i%>"><%=i %></a>
<% }
%>
</body>
</html>
<%@ page contentType="text/html; charset=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>
<h1>用户账号列表</h1>
<hr>
<c:forEach items="${list}" var="u">
编号:${u.id}<br>
账号:${u.userName}<br>
邮箱:${u.email}<br>
电话:${u.phone}<br>
<hr>
</c:forEach>
<c:forEach begin="1" end="${maxPage}" var="i">
<a href="findUser.do?page=${i}">${i}</a>
</c:forEach>
</body>
</html>
⑤在eclipse中写HTML或JSP代码时,代码写的正确,但有时会有错误提示,这时我们可以进行ctrl+A(全选),ctrl+X(剪切),ctrl+V(粘贴)一系列操作,这样就可以将错误提示取消掉。