一.认识URL传值
URL传值是指在链接到某个页面时向目标页面传递参数。
1.1为什么需要URL传值
教务管理系统有这样的需求:在显示了学生列表的displayStu.jsp中,在每一个学生后面加上“删除”链接,用户点击后,会删除对应的学生。问题是:如何让服务器知道你要删除哪个学生?所以单击链接时,要告诉服务器需要删除学生的学号。
链接的语法如下:
<a href = "目标页面路径">链接内容</a>
如:
<a href = "deleteStu.jsp">删除</a>
1.2如何使用URL传值
URL传值,其方法是在原URL后面添加
?参数名1 = 参数值1 & 参数名2 = 参数值2 &...
如:
http://localhost:8080/Prj04/deleteStu.jsp?stuno = 0001
表示访问http://localhost:8080/Prj04/deleteStu.jsp,并传递参数stuno,值为0001
1.3如何得到URL参数
目标页面的参数是用request对象获得的,方法如下:
<%
//获得参数stuno,赋值给str
String str = request.getParameter("stuno");
%>
如果没有传过来或者参数名写错,str为null。request也是九大内置对象之一,其作用是获取请求的信息。
举个例子描述参数获取的情况。
urlTest1.jsp
<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
<head>
<title>
urlTest1
</title>
</head>
<body>
<%
//获得参数stuno,赋值给str
String str = request.getParameter("stuno");
out.println("参数stuno的值为:" + str);
%>
</body>
</html>
在浏览器输入http:localhost:8080/Prj04/urlTest1.jsp ,如下图:
在浏览器输入http:localhost:8080/Prj04/urlTest1.jsp?stuno=0001 ,如下图:
二.用URL传值实现删除
2.1编写displayStu.jsp
在该页面显示所有学生。每一个学生后面的“删除”连接格式如下:
<a href = "deleteStu.jsp?stuno=[该学生的学号]">删除</a>
diplayStu.jsp代码如下:
<%@ page language = "java" import = "java.sql.*" pageEncoding = "gb2312" %>
<html>
<head>
<title>diplayStu</title>
</head>
<body>
单击链接,删除学生
<table border = "1">
<tr bgcolor = yellow>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>删除</th>
</tr>
<%
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
Connection conn = DriverManager.getConnection("jdbc:mysql:localhost:3306/school?useSSL=false&serverTimezone=GMT");
String sql = "select * from T_STUDENT";
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while(rs.next()){
String stuno = rs.getString("STUNO");
out.println("<tr>");
out.println("<td>" + stuno + "</td>");
out.println("<td>" + rs.getString("STUNAME") + "</td>");
out.println("<td>" + rs.getString("STUSEX") + "</td>");
out.println("<td><a href = 'deleteStu.jsp?stuno=" + stuno + "'>删除</a></td>");
out.println("</tr>");
}
stat.close();
conn.close();
%>
</table>
</body>
</html>
在浏览器输入http://localhost:8080/Prj04/displayStu.jsp ,如下图:
可能遇到的报错: javax.servlet.ServletException:java.lang.ClassNotFoundException:com.mysql.cj.jdbc.Driver
解决方法如下:
1.首先将jdbc的jar包放在tomcat的安装目录里面的lib文件夹里面。
2.在myeclipse导入jdbc的jar包。
很多同学可能只在myeclipse里面导入了jar包,而没有将jar包也放在lib文件夹里面。所以就会出现上面的ClassNotFoundException报错。
2.2编写deleteStu.jsp
该页面负责得到链接传来的参数stuno,并进行删除。代码如下:
deleteStu.jsp
<%@ page language = "java" import = "java.sql.*" pageEncoding = "gb2312" %>
<html>
<head>
<title>deleteStu</title>
</head>
<body>
<%
String stuno = request.getParameter("stuno");
Class.forName("com.mysql.cj.jdbc.Driver");//加载驱动
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?useSSLfalse&serverTimezone=GMT", "root", "123456");
Statement stat = conn.createStatement();
String sql = "delete from t_student where stuno = '" + stuno + "'";
stat.executeUpdate(sql);//执行删除工作
stat.close();
conn.close();
%>
<%= stuno %>被成功删除,<a href = "displayStu.jsp">回到displayStu.jsp</a>
</body>
</html>
在浏览器输入http://localhost:8080/Prj04/displayStu.jsp ,随便点击删除,如下图:
2.3将两个页面合成一个页面
代码如下:
displayAndDeleteStu.jsp
<%@ page language = "java" pageEncoding = "gb2312" %>
<html>
<head>
<title>displayAndDeleteStu.jsp</title>
</head>
<body>
单击链接删除学生
<table border = "1">
<tr>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>删除</th>
</tr>
<%
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?useSSL=false&serverTimezone=GMT", "root", "123456");
String sql = null;
Statement stat ;
String stuno = request.getParameter("stuno");
if(stuno != null){
stat = conn.createStatement();
sql = "delete from t_student where stuno = '" + stuno + "'";
stat.executeUpdate(sql);//执行删除工作
}
sql = "select * from t_student";
stat = conn.createStatement();
ResultSet rs = stat.executeQuery(sql);
while(rs.next()){
out.println("<tr>");
out.println("<td>" + rs.getString("stuno") + "</td>");
out.println("<td>" + rs.getString("stuname") + "</td>");
out.println("<td>" + rs.getString("stusex") + "</td>");
out.println("<td><a href = 'displayAndDeleteStu.jsp?stuno=" + rs.getString("stuno") + "'>删除</a></td>");
out.println("</tr>");
}
stat.close();
conn.close();
%>
</table>
</body>
</html>
在浏览器输入http://localhost:8080/Prj04/displayAndDeleteStu.jsp,如下图:
摘自《Java Web 开发与应用》,主编郭克华,副主编宋虹,清华大学出版社
欢迎小伙伴来评论~~啊