案例分析:
创建一个表单,暂时只实现注册功能,通过用户名即可注册,注册的信息发送给数据库,可以实现增加、删除、查询所有信息等功能。
实现:
1.将MySQL驱动包拷贝到WebRoot–>Web-INF–>lib文件夹下;
2.在数据库中建一个user表,只有id和name两个字段;
3.创建一个表单,点击确定按钮以后提交,连接到doadd.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<form action="doadd.jsp">
姓名:<input type="text" name="name"/><br/>
<button type="submit">确定button>
form>
4.实现doadd.jsp,需要注意的是,doadd.jsp并不会展示给用户,它的作用就是把新注册的用户名添加到数据库:
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
//获取上一个页面传递过来的数据
String name = request.getParameter("name");
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
Connection conn = DriverManager.getConnection(url,"root","123456");
String sql = "insert into user values(null,?);";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,name);
ps.executeUpdate();
conn.close();
%>
<script>
window.location = "show.jsp";
script>
5.点击确定按钮之后,用户信息通过doadd.jsp被添加到数据库,然后通过show.jsp将用户信息展示给用户:
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<h1>用户列表h1>
<table border="1" width="400">
<%
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
Connection conn = DriverManager.getConnection(url,"root","123456");
String sql = "select * from user;";
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs.next()){
%>
<tr>
<td><%=rs.getInt("id") %>td>
<td><%=rs.getString("name") %>td>
<td>
<a href="dodel.jsp?id=<%=rs.getInt("id") %>">删除a>
td>
tr>
<%
}
conn.close();
%>
table>
<a href="index.jsp">继续注册a>
6.如果点击删除,就会删除对应的用户,这个通过dodel.jsp实现,同样这个页面不会展示给用户:
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String id = request.getParameter("id");
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";
Connection conn = DriverManager.getConnection(url,"root","123456");
String sql = "delete from user where id="+id;
PreparedStatement ps = conn.prepareStatement(sql);
ps.executeUpdate();
conn.close();
%>
<script>
window.location = "show.jsp";
script>
7.如果选择继续注册,则会通过show.jsp最后的超链接回到最初的注册页面。
实现这些功能遇到的问题:
1.在实现添加功能时,不知道如何获取上一个页面传递过来的数据,即注册的用户名。
解决:通过request.getParameter()这个API可以获取到上一个页面传递过来的数据。
2.点击注册的确定按钮后,出现空白页。
解决:因为doadd.jsp不会展示给用户,所以这个页面加载完毕后应该连接到show.jsp,将用户信息展示给用户。
实现过程中用到的一些比较重要的知识点:
1.通过request.getParameter()这个API可以获取到上一个页面传递过来的数据。
2.浏览器地址栏后加?id=…可以传递参数。
<a href="dodel.jsp?id=<%=rs.getInt("id") %>">删除a>
所以点击这个超链接就可以将id传递给dodel.jsp,从而删除对应id的用户。