这篇文章主要介绍了JSP使用MVC模式完成删除和修改功能的方法,以实例形式较为详细的分析了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)添加提示信息:
复制代码代码如下:
${deleteinfo}
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程序设计有所帮助。
新闻热点
疑难解答