JSP使用MVC模式完成删除和修改功能实例详解
本文实例讲述了JSP使用MVC模式完成删除和修改功能的方法。分享给大家供大家参考。具体如下:
目标:
①进一步理解MVC模式;
②掌握删除功能的基本实现过程;
③掌握修改功能的基本实现过程。
主要内容:
①使用MVC完成删除功能;
②使用MVC模式完成信息更新功能。
1、如何使用MVC模式完成删除功能
根据MVC模式的特点,分别考虑MVC的3个部分。
①首先考虑V部分:
输入:通常删除功能是在查询的基础上完成的,所以在用户信息列表界面上可以添加删除的超链。
输出:提示用户删除是否成功,可以采用单独的界面,也可以在其他页面中显示。我们采用第二种方式,在用户列表界面中显示提示信息。
②其次考虑M部分:需要在User.java中添加删除用户的方法即可。
③最后考虑C部分:获取用户要删除的用户名,然后调用M部分完成删除,最后转向用户信息列表界面。
下面分别实现。
2、在userlist.jsp文件中添加删除超链和提示信息
1)添加删除超链(红色部份):
<c:forEachvar="user"items="${users}">
<tr>
<td>
${user.username}
</td>
<td>
${user.userpass}
</td>
<td>
<ahref="deleteUser?username=${user.username}">删除</a>
</td>
</tr>
</c:forEach>
注意:删除的时候需要知道要删除的用户的名字(这里名字作为主键),所以通过参数传递名字。
2)添加提示信息:
<fontcolor="red">${deleteinfo}</font>3)修改后的代码如下:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
<fontcolor="red">${addinfo}</font>
<fontcolor="red">${deleteinfo}</font>
<br>
<c:iftest="${pageNo!=1}">
<ahref="getAllUser?pageNo=1">第一页</a>
<ahref="getAllUser?pageNo=${pageNo-1}">上一页</a>
</c:if>
<c:iftest="${pageNo!=pageCounter}">
<ahref="getAllUser?pageNo=${pageNo+1}">下一页</a>
<ahref="getAllUser?pageNo=${pageCounter}">最后一页</a>
</c:if>
<br>
<tablewidth="200"border="1"height="56">
<tbody>
<tr>
<td>
用户名
</td>
<td>
口令
</td>
<td>
</td>
</tr>
<c:forEachvar="user"items="${users}">
<tr>
<td>
${user.username}
</td>
<td>
${user.userpass}
</td>
<td>
<ahref="deleteUser?username=${user.username}">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
3、编写M部分:在User.java中添加方法
在User.java中添加deleteUser方法,参考代码如下:
publicbooleandeleteUser(Stringusername){
Connectioncon=null;
Statementstmt=null;
booleanb;//表示删除成功与否
try{
//指出连接数据库所需要的驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立与数据库之间的连接
con=DriverManager.getConnection(
"jdbc:oracle:thin:@myserver:1521:mydb","scott",
"tiger");
//编写查询数据库信息的SQL语句
Stringsql="deletefromusertablewhereusername='"+username+"'";
//创建语句对象,用于执行SQL语句
stmt=con.createStatement();
//执行没有结果集返回的语句,返回的是影响数据库表中记录的个数
intn=stmt.executeUpdate(sql);
if(n>0)
b=true;
else
b=false;
}catch(Exceptione){
b=false;
}finally{
//关闭相关对象
if(stmt!=null)
try{
stmt.close();
}catch(Exceptionee){
}
if(con!=null)
try{
con.close();
}catch(Exceptionee){
}
}
returnb;
}
注意:红色部分需要修改成您自己的服务器和数据库。
4、编写C部分:添加DeleteUser控制器
DeleteUser.java的代码如下:
packageservlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavabean.User;
importjavax.servlet.RequestDispatcher;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassDeleteUserextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//获取信息
Stringusername=request.getParameter("username");
//调用JavaBean
Useruser=newUser();
booleanb=user.deleteUser(username);
//传递删除成功或失败的信息
Stringinfo;
if(b)
info="删除成功!";
else
info="删除失败!";
request.setAttribute("deleteinfo",info);
//选择界面对用户响应
RequestDispatcherrd=request.getRequestDispatcher("getAllUser");
rd.forward(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
}
5、如何使用MVC模式实现修改功能
修改功能本身包括两个过程:用户选择要修改的用户,然后把该用户的信息显示在修改界面上;用户进行修改,修改之后提交,服务器完成修改功能。
对于第一个功能,采用MVC模式:
V部分:
输入:在用户列表界面上添加“修改”超链。
输出:用户信息修改界面,把查询到的信息显示在修改界面上。
M部分:编写按照用户名查询用户信息的方法。
C部分:获取要删除的用户的名字,调用M部分的查询方法,得到用户信息,传递到修改界面,使用修改界面对用户响应。
对于第二部分,采用MVC模式:
V部分
输入:上面编写的修改界面。
输出:用户信息列表界面
M部分:编写用户信息修改的方法。
C部分:获取用户输入的信息,调用M部分完成修改,转向列表界面对用户进行响应。
下面分别介绍实现方法。
6、修改用户信息列表界面
修改后的代码如下:
<%@pagecontentType="text/html;charset=gb2312"%>
<%@taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
<fontcolor="red">${addinfo}</font>
<fontcolor="red">${deleteinfo}</font>
<fontcolor="red">${updateinfo}</font>
<br>
<c:iftest="${pageNo!=1}">
<ahref="getAllUser?pageNo=1">第一页</a>
<ahref="getAllUser?pageNo=${pageNo-1}">上一页</a>
</c:if>
<c:iftest="${pageNo!=pageCounter}">
<ahref="getAllUser?pageNo=${pageNo+1}">下一页</a>
<ahref="getAllUser?pageNo=${pageCounter}">最后一页</a>
</c:if>
<br>
<tablewidth="200"border="1"height="56">
<tbody>
<tr>
<td>
用户名
</td>
<td>
口令
</td>
<td>
</td>
</tr>
<c:forEachvar="user"items="${users}">
<tr>
<td>
${user.username}
</td>
<td>
${user.userpass}
</td>
<td>
<ahref="findUser?username=${user.username}">修改</a>
</td>
<td>
<ahref="deleteUser?username=${user.username}">删除</a>
</td>
</tr>
</c:forEach>
</tbody>
</table>
7、编写信息修改界面
参考代码如下:
<%@pagecontentType="text/html;charset=gb2312"%>修改用户<br>
<formname="form1"method="post"action="updateUser">
用户名:${user.username}
<inputtype="hidden"name="username"value="${user.username}"><br>
口令:<inputtype="text"name="userpass"value="${user.userpass}"><br>
<inputtype="submit"value="修改"><inputtype="reset"value="重置">
</form>
8、在User.java中添加查询信息的方法
publicUserfindUserByName(Stringusername){
Connectioncon=null;
Statementstmt=null;
ResultSetrs=null;
try{
//指出连接数据库所需要的驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立与数据库之间的连接
con=DriverManager.getConnection(
"jdbc:oracle:thin:@myserver:1521:mydb","scott",
"tiger");
//编写查询数据库信息的SQL语句
Stringsql="select*fromusertablewhereusername='"+username+"'";
//创建语句对象,用于执行SQL语句
stmt=con.createStatement();
//执行没有结果集返回的语句,返回的是影响数据库表中记录的个数
rs=stmt.executeQuery(sql);
if(rs.next()){
Useruser=newUser();
Stringuserpass=rs.getString(2);
user.setUsername(username);
user.setUserpass(userpass);
returnuser;
}
}catch(Exceptione){
returnnull;
}finally{
//关闭相关对象
try{
rs.close();
}catch(Exceptione){}
if(stmt!=null)
try{
stmt.close();
}catch(Exceptionee){
}
if(con!=null)
try{
con.close();
}catch(Exceptionee){
}
}
returnnull;
}
注意:红色部分需要修改成您自己的服务器和数据库。
9、在User.java中添加“修改信息”的方法
publicbooleanupdate(){
Connectioncon=null;
Statementstmt=null;
booleanb;
try{
//指出连接数据库所需要的驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立与数据库之间的连接
con=DriverManager.getConnection(
"jdbc:oracle:thin:@myserver:1521:mydb","scott",
"tiger");
//编写更新的sQL语句
Stringsql="updateusertablesetuserpass='"+userpass+"'whereusername='"+username+"'";
//创建语句对象,用于执行SQL语句
stmt=con.createStatement();
//执行没有结果集返回的语句,返回的是影响数据库表中记录的个数
intn=stmt.executeUpdate(sql);
if(n>0)
b=true;
else
b=false;
}catch(Exceptione){
b=false;
}finally{
if(stmt!=null)
try{
stmt.close();
}catch(Exceptionee){
}
if(con!=null)
try{
con.close();
}catch(Exceptionee){
}
}
returnb;
}
注意:红色部分需要修改成您自己的服务器和数据库。
10、编写查询信息的Servlet
参考代码如下:
packageservlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavabean.User;
importjavax.servlet.RequestDispatcher;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassFindUserextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//获取信息
Stringusername=request.getParameter("username");
//调用Javabean
Useruser=newUser();
user=user.findUserByName(username);
//传递值
request.setAttribute("user",user);
//选择界面对用户进行响应
RequestDispatcherrd=request.getRequestDispatcher("updateuser.jsp");
rd.forward(request,response);
}
}
11、编写修改信息的Servlet
参考代码如下:
packageservlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavabean.User;
importjavax.servlet.RequestDispatcher;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassUpdateUserextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//获取信息
Stringusername=request.getParameter("username");
Stringuserpass=request.getParameter("userpass");
//调用Javabean
Useruser=newUser();
user.setUsername(username);
user.setUserpass(userpass);
booleanb=user.update();
//传递值
Stringinfo;
if(b)
info="修改成功!";
else
info="修改失败!";
//选择界面对用户进行响应
RequestDispatcherrd=request.getRequestDispatcher("getAllUser");
rd.forward(request,response);
}
}
希望本文所述对大家的JSP程序设计有所帮助。