重新学习JSP之三

一.认识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 开发与应用》,主编郭克华,副主编宋虹,清华大学出版社

欢迎小伙伴来评论~~啊

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值