当前位置:首页 > JSP教程 > JSP常见问题

JSP使用MVC模式完成删除和修改功能实例详解

本文实例讲述了jsp使用mvc模式完成删除和修改功能的方法。分享给大家供大家参考。具体如下:

目标:

① 进一步理解mvc模式;
② 掌握删除功能的基本实现过程;
③ 掌握修改功能的基本实现过程。

主要内容:

① 使用mvc完成删除功能;
② 使用mvc模式完成信息更新功能。

1、如何使用mvc模式完成删除功能

根据mvc模式的特点,分别考虑mvc的3个部分。
① 首先考虑v部分:

输入:通常删除功能是在查询的基础上完成的,所以在用户信息列表界面上可以添加删除的超链。

输出:提示用户删除是否成功,可以采用单独的界面,也可以在其他页面中显示。我们采用第二种方式,在用户列表界面中显示提示信息。

② 其次考虑m部分:需要在user.java中添加删除用户的方法即可。

③ 最后考虑c部分:获取用户要删除的用户名,然后调用m部分完成删除,最后转向用户信息列表界面。

下面分别实现。

2、在userlist.jsp文件中添加删除超链和提示信息

1)添加删除超链(红色部份):

<c:foreach var="user" items="${users}"> <tr> <td> ${user.username} </td> <td> ${user.userpass} </td> <td> <a href="deleteuser?username=${user.username}">删除</a> </td> </tr> </c:foreach>

注意:删除的时候需要知道要删除的用户的名字(这里名字作为主键),所以通过参数传递名字。

2)添加提示信息:

复制代码 代码如下:
<font color="red"> ${deleteinfo} </font>

3)修改后的代码如下:

<%@ page contenttype="text/html;charset=gb2312"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <font color="red"> ${addinfo} </font> <font color="red"> ${deleteinfo} </font> <br> <c:if test="${pageno!=1}"> <a href="getalluser?pageno=1">第一页</a> <a href="getalluser?pageno=${pageno-1}">上一页</a> </c:if> <c:if test="${pageno!=pagecounter}"> <a href="getalluser?pageno=${pageno+1}">下一页</a> <a href="getalluser?pageno=${pagecounter}">最后一页</a> </c:if> <br> <table width="200" border="1" height="56"> <tbody> <tr> <td> 用户名 </td> <td> 口令 </td> <td> </td> </tr> <c:foreach var="user" items="${users}"> <tr> <td> ${user.username} </td> <td> ${user.userpass} </td> <td> <a href="deleteuser?username=${user.username}">删除</a> </td> </tr> </c:foreach> </tbody> </table>

3、编写m部分:在user.java中添加方法

在user.java中添加deleteuser方法,参考代码如下:

public boolean deleteuser(string username) { connection con = null; statement stmt = null; boolean b; // 表示删除成功与否 try { // 指出连接数据库所需要的驱动程序 class.forname("oracle.jdbc.driver.oracledriver"); // 建立与数据库之间的连接 con = drivermanager.getconnection( "jdbc:oracle:thin:@myserver:1521:mydb", "scott", "tiger"); // 编写查询数据库信息的sql语句 string sql = "delete from usertable where username='" + username + "'"; // 创建语句对象,用于执行sql语句 stmt = con.createstatement(); // 执行没有结果集返回的语句,返回的是影响数据库表中记录的个数 int n = stmt.executeupdate(sql); if (n > 0) b = true; else b = false; } catch (exception e) { b = false; } finally { // 关闭相关对象 if (stmt != null) try { stmt.close(); } catch (exception ee) { } if (con != null) try { con.close(); } catch (exception ee) { } } return b; }

注意:红色部分需要修改成您自己的服务器和数据库。

4、编写c部分:添加deleteuser控制器

deleteuser.java的代码如下:

package servlet; import java.io.ioexception; import java.io.printwriter; import javabean.user; import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class deleteuser extends httpservlet { public void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { //获取信息 string username = request.getparameter("username"); // 调用javabean user user = new user(); boolean b = user.deleteuser(username); // 传递删除成功或失败的信息 string info; if(b) info = "删除成功!"; else info = "删除失败!"; request.setattribute("deleteinfo",info); // 选择界面对用户响应 requestdispatcher rd = request.getrequestdispatcher("getalluser"); rd.forward(request,response); } public void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { doget(request,response); } }

5、如何使用mvc模式实现修改功能

修改功能本身包括两个过程:用户选择要修改的用户,然后把该用户的信息显示在修改界面上;用户进行修改,修改之后提交,服务器完成修改功能。
对于第一个功能,采用mvc模式:

v部分:

输入:在用户列表界面上添加“修改”超链。
输出:用户信息修改界面,把查询到的信息显示在修改界面上。

m部分:编写按照用户名查询用户信息的方法。

c部分:获取要删除的用户的名字,调用m部分的查询方法,得到用户信息,传递到修改界面,使用修改界面对用户响应。

对于第二部分,采用mvc模式:

v部分

输入:上面编写的修改界面。
输出:用户信息列表界面

m部分:编写用户信息修改的方法。

c部分:获取用户输入的信息,调用m部分完成修改,转向列表界面对用户进行响应。

下面分别介绍实现方法。

6、修改用户信息列表界面

修改后的代码如下:

<%@ page contenttype="text/html;charset=gb2312"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <font color="red"> ${addinfo} </font> <font color="red"> ${deleteinfo} </font> <font color="red"> ${updateinfo} </font> <br> <c:if test="${pageno!=1}"> <a href="getalluser?pageno=1">第一页</a> <a href="getalluser?pageno=${pageno-1}">上一页</a> </c:if> <c:if test="${pageno!=pagecounter}"> <a href="getalluser?pageno=${pageno+1}">下一页</a> <a href="getalluser?pageno=${pagecounter}">最后一页</a> </c:if> <br> <table width="200" border="1" height="56"> <tbody> <tr> <td> 用户名 </td> <td> 口令 </td> <td> </td> </tr> <c:foreach var="user" items="${users}"> <tr> <td> ${user.username} </td> <td> ${user.userpass} </td> <td> <a href="finduser?username=${user.username}">修改</a> </td> <td> <a href="deleteuser?username=${user.username}">删除</a> </td> </tr> </c:foreach> </tbody> </table>

7、编写信息修改界面

参考代码如下:

<%@ page contenttype="text/html;charset=gb2312"%> 修改用户<br> <form name="form1" method="post" action="updateuser"> 用户名:${user.username} <input type="hidden" name="username" value="${user.username}"><br> 口令:<input type="text" name="userpass" value="${user.userpass}"><br> <input type="submit" value="修改"><input type="reset" value="重置"> </form>

8、在user.java中添加查询信息的方法

public user finduserbyname(string username) { connection con = null; statement stmt = null; resultset rs = null; try { // 指出连接数据库所需要的驱动程序 class.forname("oracle.jdbc.driver.oracledriver"); // 建立与数据库之间的连接 con = drivermanager.getconnection( "jdbc:oracle:thin:@myserver:1521:mydb", "scott", "tiger"); // 编写查询数据库信息的sql语句 string sql = "select * from usertable where username='" + username + "'"; // 创建语句对象,用于执行sql语句 stmt = con.createstatement(); // 执行没有结果集返回的语句,返回的是影响数据库表中记录的个数 rs = stmt.executequery(sql); if(rs.next()){ user user = new user(); string userpass = rs.getstring(2); user.setusername(username); user.setuserpass(userpass); return user; } } catch (exception e) { return null; } finally { // 关闭相关对象 try{ rs.close(); }catch(exception e){} if (stmt != null) try { stmt.close(); } catch (exception ee) { } if (con != null) try { con.close(); } catch (exception ee) { } } return null; }

注意:红色部分需要修改成您自己的服务器和数据库。

9、在user.java中添加“修改信息”的方法

public boolean update() { connection con = null; statement stmt = null; boolean b; try { // 指出连接数据库所需要的驱动程序 class.forname("oracle.jdbc.driver.oracledriver"); // 建立与数据库之间的连接 con = drivermanager.getconnection( "jdbc:oracle:thin:@myserver:1521:mydb", "scott", "tiger"); // 编写更新的sql语句 string sql = "update usertable set userpass = '"+userpass+"' where username='" + username + "'"; // 创建语句对象,用于执行sql语句 stmt = con.createstatement(); // 执行没有结果集返回的语句,返回的是影响数据库表中记录的个数 int n = stmt.executeupdate(sql); if(n>0) b=true; else b=false; } catch (exception e) { b = false; } finally { if (stmt != null) try { stmt.close(); } catch (exception ee) { } if (con != null) try { con.close(); } catch (exception ee) { } } return b; }

注意:红色部分需要修改成您自己的服务器和数据库。

10、编写查询信息的servlet

参考代码如下:

package servlet; import java.io.ioexception; import java.io.printwriter; import javabean.user; import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class finduser extends httpservlet { public void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { dopost(request,response); } public void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { // 获取信息 string username = request.getparameter("username"); //调用javabean user user = new user(); user = user.finduserbyname(username); // 传递值 request.setattribute("user", user); // 选择界面对用户进行响应 requestdispatcher rd = request.getrequestdispatcher("updateuser.jsp"); rd.forward(request, response); } }

11、编写修改信息的servlet

参考代码如下:

package servlet; import java.io.ioexception; import java.io.printwriter; import javabean.user; import javax.servlet.requestdispatcher; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; public class updateuser extends httpservlet { public void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { dopost(request,response); } public void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { // 获取信息 string username = request.getparameter("username"); string userpass = request.getparameter("userpass"); //调用javabean user user = new user(); user.setusername(username); user.setuserpass(userpass); boolean b = user.update(); // 传递值 string info ; if(b) info="修改成功!"; else info="修改失败!"; // 选择界面对用户进行响应 requestdispatcher rd = request.getrequestdispatcher("getalluser"); rd.forward(request, response); } }

希望本文所述对大家的jsp程序设计有所帮助。



【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐