Web程序设计(JSP)实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WEB程序设计(JSP)实验
计算机科学与信息学院汪国武
/bigfive
实验一 JSP实验环境组建与简单JSP应用
1.开发环境搭建
Step1:安装和设置JDK
以jdk1.6为例,安装位置C:\Program Files\Java\jdk1.6.0_12
创建环境变量:JAVA_HOME为C:\Program Files\Java\jdk1.6.0_12
在建环境变量PATH中添加:%JAVA_HOME%\bin;
创建环境变量CLASSPATH:
%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
Step2:安装支持JSP的Web服务器
以Tomcat6.0.29为例,安装位置d:\Tomcat6
Step3:安装MyEclipse
安装MyEclipse7.0
Step4:设置Tomcat,可以从MyEclipse中直接启动Tomcat6
操作步骤:Window→Preferences→MyEclipse Enterprise Workbench→
MyEclipse→Servers→Tomcat→Tomcat6.x
●Tomcat Server选择Enable
●Tomcat home directory:d:\tomcat6
●设置Tomcat运行使用的JDK:展开Tomcat6.x,单击JDK,单击tomcat JDK name:后的
Add,在打开的页面中,单击JRE home后的Directory按钮,选择输入C:\Program Files\Java\jdk1.6.0_12
2.开发和运行JSP程序
⏹创建Web项目
File→New→Web Project(如:Myjsp)
⏹新建JSP文件(如firstJsp.jsp)
⏹编辑JSP文件(可借助DreamWeaver)
⏹发布项目到Tomcat
右击项目名称Myjsp→MyEclipse→Add and Remove Project Deployments
Project:选择Myjsp项目,并单击Add,弹出Project Deployments对话框,
在对话框中,选择server为Tomcat 6.x,并单击Finish
⏹运行测试
⏹启动Tomcat 6.x
运行JSP文件
浏览器中输入:http://localhost:8080/Myjsp/firstJsp.jsp
实验二 JSP语法的应用
实验内容和要求:
1.实现客户在一个登录页面form.jsp(如图2-1)输入登录信息并单击“确定”后跳转到另一个页面doForm.jsp(如图2-2)输出“用户名”和“口令”信息。

图2-1
图2-2
要求:分别用下列三种方法实现。

(1)创建一个JavaBean----User类,该类含有两个属性username和password,给每个属性增加相应的get和set方法。

在doForm.jsp页面中用<jsp:useBean>动作标识实例化User类对象,再使用<jsp:setProperty>动作标识来把客户在form.jsp表单中填写的值赋给对象,最后用<jsp:getProperty>在页面输出结果。

(2)创建一个JavaBean----User类,该类含有两个属性username和password,给每个属性增加相应的get和set方法。

在doForm.jsp页面中采用Java以jsp脚本代码(scriptlet)方式实例化User类对象,用setAttribute()函数把对象写入request或session中,再使用<jsp:setProperty>动作标识来把客户在form.jsp表单中填写的值赋给对象,最后用jsp表达式的方式把对象的信息输出到页面中。

(3)不创建JavaBean----User类。

在doForm.jsp页面中用getParameter()来获取客户在form.jsp表单中填写的值,最后输出相关信息。

参考答案:
方法(1)
User.java(代码2-1),内容如下:
public class User {
private String username;
private String password;
public void setUsername(String username) {
ername = username;
}
public String getUsername() {
return username;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return password;
}
}
form.jsp(代码2-2),内容如下
<%@page language="java"import="java.util.*"pageEncoding="gb2312"%>
<html>
<head></head>
<body>
<form action="doForm.jsp">
用户名:<input type="text"name="username"/><br>
口令:<input type="password"name="password"/><br>
<input type="submit"value="提交"/>
<input type="reset"value="重置"/>
</form>
</body>
</html>
doForm.jsp(代码2-3),内容如下
<%@page language="java"import="java.util.*"pageEncoding="gb2312"%>
<html>
<head></head>
<body>
<jsp:useBean id="user"class="er" scope="request"></jsp:useBean> <jsp:setProperty name="user"property="*"/>
用户名:<jsp:getProperty name="user"property="username"/><br>
口令:<jsp:getProperty name="user"property="password"/>
</body>
</html>
方法(2)
User.java同代码2-1,form.jsp同代码2-2
doForm.jsp(代码2-4),内容如下:
<%@page language="java"import="java.util.*"pageEncoding="gb2312"%>
<%@page import="er"%>
<html>
<head></head>
<body>
<%
User userInfo=new User();
request.setAttribute("user",userInfo);
%>
<jsp:setProperty name="user"property="*"/>
用户名:<%=userInfo.getUsername() %><br>
口令:<%=userInfo.getPassword() %>
</body>
</html>
方法(3)
form.jsp同代码2-2
doForm.jsp(代码2-5),内容如下:
<%@page language="java"import="java.util.*"pageEncoding="gb2312"%>
<%@page import="er"%>
<html>
<head></head>
<body>
用户名:<%=request.getParameter("username") %><br>
口令:<%=request.getParameter("password") %>
</body>
</html>
实验三 JSP内置对象的应用
实验内容和要求:
对实验二的内容进行扩展,必须实现以下4个jsp文件,采用jsp+JavaBean实现。

(1) login.jsp:登录页面,如图2-1所示。

(2) doLogin.jsp(无界面):登录处理页面,假定正确的用户名为admin,口令为123。

如果用户名和口令不正确则显示登录错误信息,否则登录成功后,重定向到messageBoard.jsp(留言板页面),可以进行留言。

(3) messageBoard.jsp: 留言板页面,能实现如图3-1所示的留言。

图3-1
(4) showMessage.jsp:显示留言信息页面,如图3-2所示。

该页面能显示留言者(必须为login.jsp页面中输入的用户名)、标题和内容,要求能正确显示图3-1所示的留言内容。

提示:留言者的用session保存
图3-2
参考答案:
login.jsp(代码3-1),内容如下
<%@page language="java"import="java.util.*"pageEncoding="gb2312"%>
<html>
<head></head>
<body>
<form action="doForm.jsp">
用户名:<input type="text"name="username"/><br>
口令:<input type="password"name="password"/><br>
<input type="submit"value="提交"/>
<input type="reset"value="重置"/>
</form>
</body>
</html>
doLogin.jsp(代码3-2),内容如下
<%@page language="java"pageEncoding="gb2312"%>
<%
String userName=request.getParameter("username");//获取用户名
session.setAttribute("name",userName); //用户名写入session,显示留言时需要
String passWord=request.getParameter("password");//获取口令
if(userName.equals("admin")&&passWord.equals("123")) //用户名和密码正确 response.sendRedirect("messageBoard.jsp"); //重定向到留言页面
else
response.sendError(500,"登陆错误,用户名或密码不正确!");
%>
messageBoard.jsp(代码3-3),内容如下
<%@page contentType="text/html;charset=gb2312"%>
<form action="showMessage.jsp"method="post">
<table border="1"rules="rows">
<tr height="30">
<td>留言标题:</td>
<td><input type="text"name="title"size="35"></td>
</tr>
<tr>
<td>留言内容:</td>
<td><textarea name="content"rows="8"cols="34"></textarea></td> </tr>
<tr align="center"height="30">
<td colspan="2">
<input type="submit"value="提交">
<input type="reset"value="重置">
</td>
</table>
</form>
showMessage.jsp(代码3-4),内容如下
<%@page contentType="text/html; charset=gb2312"%>
<%@page import="bean.toolbean.MyTools"%>
<jsp:useBean id="message"class="bean.valuebean.Message"scope="request"> <jsp:setProperty name="message"property="*"/>
</jsp:useBean>
<html>
<title>显示留言信息</title>
<body>
留言者:<%=session.getAttribute("name") %><br>
留言标题:<%=MyTools.change(message.getTitle()) %><br>
留言内容:<%=MyTools.change(message.getContent()) %>
</body>
</html>
Message.java(代码3-5),内容如下//值bean
package bean.valuebean;//包名
public class Message {
private String title; //存储留言标题
private String content; //存储留言内容
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
Mytools.java(代码3-6),内容如下//工具bean
package bean.toolbean;//包名
public class MyTools {
public static String change(String str){//转换字符串
str=str.replace("<","&lt;");
str=str.replace(">","&gt;");
return str;
}
}
实验四 Servlet的应用
实验内容和要求:
用Servlet来完成实验三的所有任务,即先登录,然后留言,再显示留言。

采用JSP+JavaBean+Servlet开发模式。

实验步骤如下:
1.创建登录页面login.jsp
<%@page language="java"import="java.util.*"pageEncoding="gb2312"%>
<html>
<head></head>
<body>
<form action="DoLogin"method="get"> <!--注意此处设为get方法-->
用户名:<input type="text"name="username"/><br>
口令:<input type="password"name="password"/><br>
<input type="submit"value="提交"/>
<input type="reset"value="重置"/>
</form>
</body>
</html>
2.创建处理登录的Servlet:DoLogin.java,过程如下:
选择项目中src文件夹,New Servlet,弹出Create a new Servlet对话框,设置如下(05为项目名称)
单击next后,见下图,只对Servlet/Jsp Mapping URL :作如下修改,单击finish.
此时,web.xml中应存在如下Servlet配置信息:
<servlet>
<description>ServletExample</description>
<display-name>firstServlet</display-name>
<servlet-name>DoLogin</servlet-name>
<servlet-class>servlet.DoLogin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DoLogin</servlet-name>
<url-pattern>/DoLogin</url-pattern>
</servlet-mapping>
其中,<url-pattern>/DoLogin</url-pattern>行表明,该Servlet可以用这个URL访问,http://localhost:8080/05/DoLogin
DoLogin.java代码如下
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class DoLogin extends HttpServlet {
//因为登录表单是以get方式提交的,所以重写doGet方法,运行时调用此方法
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String userName=request.getParameter("username");//获取用户名
HttpSession session = request.getSession();
session.setAttribute("name",userName); //用户名写入session,显示留言时(showMessage.jsp)需要
String passWord=request.getParameter("password");//获取口令
if(userName.equals("admin")&&passWord.equals("123")) //用户名和密码正确response.sendRedirect("messageBoard.jsp"); //重定向到留言页面else
response.sendError(500,"登陆错误,用户名或密码不正确!");
}
}
3.创建留言页面messageBoard.jsp
<%@page contentType="text/html;charset=gb2312"%>
<form action="DoMessage"method="post"><!—注意此处设为post方法-->
<table border="1"rules="rows">
<tr height="30">
<td>留言标题:</td>
<td><input type="text"name="title"size="35"></td>
</tr>
<tr>
<td>留言内容:</td>
<td><textarea name="content"rows="8"cols="34"></textarea></td> </tr>
<tr align="center"height="30">
<td colspan="2">
<input type="submit"value="提交">
<input type="reset"value="重置">
</td>
</table>
</form>
4.创建值JavaBean:Message.java同代码3-5 5.创建工具JavaBean:Mytools.java同代码3-6 6.创建处理留言的Servlet:DoMessage.java,如下图:
DoMessage.java代码如下:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
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 DoMessage extends HttpServlet {
//因为留言信息是以post方式提交的,所以重写doPost方法,运行时调用此方法
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
bean.valuebean.Message message=new bean.valuebean.Message();
message.setTitle(request.getParameter("title"));//保存留言标题
message.setContent(request.getParameter("content"));//保存留言内容
request.setAttribute("msg", message);//将对象message保存到request中//下面2行实现转发到showMessage.jsp
RequestDispatcher
dispatcher=request.getRequestDispatcher("showMessage.jsp");
dispatcher.forward(request, response);
}
}
7.创建显示留言页面showMessage.jsp
<%@page contentType="text/html; charset=gb2312"%>
<%@page import="bean.toolbean.MyTools"%>
<%@page import="bean.valuebean.Message"%>
<%Message message=(Message)request.getAttribute("msg"); %>
<html>
<title>显示留言信息</title>
<body>
留言者:<%=session.getAttribute("name") %><br>
留言标题:<%=MyTools.change(message.getTitle()) %><br>
留言内容:<%=MyTools.change(message.getContent()) %>
</body>
</html>
实验五 JSP访问数据库的应用
实验要求:
采用JSP+Servlet+JavaBean架构,设计通过下列JSP页面访问数据库(如表5-1),具体要求如下:
1.添加用户页面(AddUser.jsp),如图5-1所示;
2. 删除用户页面(Delete.jsp), 如图5-1所示;
3.查找和修改用户页面(SearchAndModify.jsp), 如图5-3所示。

图5-1 添加用户页面
图5-2 删除用户页面
图5-3 查询和修改用户页面
实验步骤如下:
1.准备需要访问的数据库
⏹下载并安装MySQL5.0
⏹Copy MySQL5.0驱动mysql-connector-java-5.0.8-bin.jar到%TOMCAT%\lib文件夹下
⏹创建数据库及表:
数据库的设计如下表:
数据库采用MySQL5.0,数据库名:db,表名:user(用户表)
表5-1 数据库的用户表
Step1:进入MySQL程序的MySQL Command Line Client界面,如下图所示
Step2:分别执行下列命令://支持中文
①创建数据库:
CREATE DATABASE `db`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci';
USE DB;
②建表:
CREATE TABLE `user` (
`username` varchar(20) NOT NULL PRIMARY KEY,
`password` varchar(20)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.开发过程如下:
Step1: 创建值JavaBean: User.java,内容如下:package valueBean;
public class User {
private String username;//用户名
private String password;//口令
public User()
{
ername="";
this.password="";
}
public void setUsername(String username) { ername = username;
}
public String getUsername() {
return username;
}
public void setPassword(String password) { this.password = password;
public String getPassword() {
return password;
}
}
Step2: 创建访问数据库的类—AccessUserFromDB.java,内容如下:
package toolBean.db;
import java.sql.*;
import er;
public class AccessUserFromDB {
private static Connection conn=null;
private static Statement stmt=null;
//构造函数中完成对数据库进行初始化
public AccessUserFromDB() {
//创建连接
conn=this.getConnection();
try {
//创建Statement
stmt=conn.createStatement();
} catch (SQLException e) {
e.printStackTrace();
}
}
//将对象user添加到表中
public void Add(User user) throws SQLException
{
String sql="INSERT INTO user(username,password) VALUES('"
+user.getUsername()+"','"+user.getPassword()+"')";
stmt.executeUpdate(sql);
}
//根据用户名(关键字)从数据库删除相应的记录
public void Delete(String username) throws SQLException
{
String sql="Delete From user Where username='"+username+"'";
stmt.executeUpdate(sql);
}
//修改数据库中的user
public void Update(User user) throws SQLException
{
String sql="UPDATE user set password='"
+user.getPassword()+"' where username='"+user.getUsername()+"'";
stmt.executeUpdate(sql);
//根据用户名称(关键字)从数据库中查找记录,并将找到的记录写入对象user中返回public User searchByUsername(String username) throws SQLException
{
User user=new User();
String sql="select * from user where username='"+username+"'";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
String name=rs.getString("username");
if(name.equals(username))
{
//将从数据库查找得到的记录存入对象user中
user.setUsername(name);
user.setPassword(rs.getString("password"));
if(rs!=null)
rs.close();
return user;
}
}
return null;//查找不到返回null
}
//根据用户判断该记录是否存在
public boolean exists(String username)
{
boolean rtn=false;
try {
if(searchByUsername(username)!=null)
rtn=true;
} catch (SQLException e) {
e.printStackTrace();
}
return rtn;
}
///建立与数据的连接
private Connection getConnection()
{
String driverClass="com.mysql.jdbc.Driver";
String url=//与创建数据库的代码结合,保证访问数据库时不出现乱码
"jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=UTF-8";
String username = "root";
String password = "123";
try {
Class.forName(driverClass);// 加载数据库驱动
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url, username, password);//建立连接} catch (SQLException e) {
e.printStackTrace();
System.out.print("数据库连接失败!");
}
return conn;
}
//关闭与访问数据库有关连接
protected void finalize()
{
try {
if(stmt!=null)
stmt.close();
if(conn!=null)
conn.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
Step3: 创建JSP文件以及相应的JavaBean
①创建添加用户页面—AddUser.jsp,代码如下:
<%@page contentType="text/html; charset=gb2312"language="java"
import="java.sql.*"errorPage=""%>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/>
<title>添加用户</title>
</head>
<body>
<form method="post"action="AddUser">
<div align="center"><font face="宋体"size="6"><strong>
添加用户</strong></font><br/><hr/>
用户名:<input name="username"type="text"/>
<br/>
<br/>
密&nbsp;&nbsp;码:
<input name="password"type="text"/>
<br/>
<br/>
<input type="submit"value="添加"/>
<input type="reset"value="取消"/>
</div>
</form>
</body>
</html>
相应的添加用户Servlet(AddUser.java),代码如下:
package er;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import toolBean.db.AccessUserFromDB;
import er;
public class AddUser extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//返回上页
String goBack="<br><a href='javascript:window.history.go(-1);'>返回上页</a>";
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String username=request.getParameter("username");
if(username==null||username.equals(""))
{
out.print("用户名不能为空!");
out.print(goBack);
}
String password=request.getParameter("password");
User user=new User();
user.setUsername(username);
user.setPassword(password);
AccessUserFromDB userDB=new AccessUserFromDB();
if(userDB.exists(user.getUsername()))
{
out.print("用户名已存在!");
out.print(goBack);
return;
}
try {
userDB.Add(user);
} catch (SQLException e) {
e.printStackTrace();
out.print("添加失败:"+e.getLocalizedMessage());
out.print(goBack);
return;
}
out.print("添加成功!");
out.print(goBack);
out.close();
}
}
②创建删除用户页面--Delete.jsp,代码如下:
<%@page contentType="text/html; charset=gb2312"language="java"
import="java.sql.*"errorPage=""%>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/> <title>删除用户</title>
</head>
<body>
<form method="post"action="DeleteUser">
<div align="center"><font face="宋体"size="6"><strong>
删除用户</strong></font><br/>
<hr/>
<p>
</p>
<p>输入删除的用户名<input name="username"type="text"/><br/><br/>
<input type="submit"name="delete"value="删除用户"/>
<br/>
<br/>
</p>
</div>
</form>
</body>
</html>
相应的删除用户Servlet (DeleteUser.java)的代码,如下:
package er;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import toolBean.db.AccessUserFromDB;
import er;
public class DeleteUser extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//返回上页
String goBack="<br><a href='javascript:window.history.go(-1);'>返回上页</a>";
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String username=request.getParameter("username");
if(username==null||username.equals(""))
{
out.print("用户名不能为空!");
out.print(goBack);
}
AccessUserFromDB userDB=new AccessUserFromDB();
if(!userDB.exists(username))
{
out.print("用户名不存在!");
out.print(goBack);
return;
}
try {
userDB.Delete(username);
} catch (SQLException e) {
e.printStackTrace();
out.print("删除失败:"+e.getLocalizedMessage());
out.print(goBack);
return;
}
out.print("删除成功!");
out.print(goBack);
out.close();
}
}
③创建查找和修改页面(SearchAndModify.jsp),代码如下:
<%@page contentType="text/html; charset=gb2312"language="java"
import="java.sql.*"errorPage=""%>
<%@page import="toolBean.db.AccessUserFromDB"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN"
"/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%
String username=request.getParameter("queryName");
er user=new er();
if(username!=null&&username!="")
{
AccessUserFromDB dbUser=new AccessUserFromDB();
er temp=dbUser.searchByUsername(username);
if(temp==null)
{
out.print("用户名不存在!");
}
else
user=temp;//防止user为null,导致下文的user.getUsername()产生异常
}
%>
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=gb2312"/> <title>查询和修改用户</title>
</head>
<body>
<div align="center">
<form name="query"method="post"action="">
<font face="宋体"size="6"><strong>查询和修改用户</strong></font><br/><hr/><br/>
输入查询的用户名:<input name="queryName"type="text"/><input type="submit"
name="query"value="查询用户"/><br/><br/><hr/><br/>
</form>
<form name="modify"method="post"action="ModifyUser">
用户名:
<input name="modfyName"type="text"value="<%=user.getUsername()%>"
readonly="readonly"/>
<br/><br/>
密&nbsp;&nbsp;码:
<input name="password"type="text"value="<%=user.getPassword()%>"/>
<br/><br/>
<input type="submit"name="modify"value="修改用户"/>
</form>
<hr/>
<a href="DeleteUser.jsp">删除用户</a><br/>
<a href="AddUser.jsp">添加用户</a><br/>
</div>
</body>
</html>
修改用户的Servlet (ModifyUser.java),代码如下:
package er;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import er;
public class ModifyUser extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//返回上页
String goBack="<br><a href='javascript:window.history.go(-1);'>返回上页</a>";
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String name=request.getParameter("modify");
if(name!=null) //单击了‘修改用户’
{
String username=request.getParameter("modfyName");
String password=request.getParameter("password");
User user=new User();
user.setUsername(username);
user.setPassword(password);
toolBean.db.AccessUserFromDB dbUser=new
toolBean.db.AccessUserFromDB();
try {
dbUser.Update(user);
} catch (SQLException e) {
e.printStackTrace();
out.print("修改失败:"+e.getLocalizedMessage());
out.print(goBack);
return;
}
}
out.print("修改成功!");
out.print(goBack);
out.close();
}
}
思考题:
1.当数据库中存贮中文信息时,如何在jsp页面中显示中文?
2.考虑将添加、删除、查找(所有)用户及修改用户集成到一个JSP页面中
实验六 JSP访问数据库的综合应用
实验内容和要求:
对实验五作进一步的改进,完成实验五中的思考题1和2 ,实现结果如图6-1所示。

具体如下,输入用户名和口令,查询结果显示在表中(不输入任何内容查找则显示所有用户);单击“删除”将先进行确认再作删除;单击“修改”将进入修改页面对所在行的用户信息作修改。

图6-1
实验内容和要求:
在完成实验五任务的基础上,作如下改动:
Step1:将处理数据库的AccessUserFromDB中的private Connection getConnection()改为public static Connection getConnection(),目的是方便调用获取数据库的连接。

Step2:添加包含增删改查的页面ShowAllUsers.jsp,代码如下:
<%@page language="java"import="java.util.*,java.sql.*"pageEncoding="gb2312"%> <%@page import="toolBean.db.AccessUserFromDB"%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<!--查找用户的表单 -->
<form action="">用户名
<input name="username"type="text"size="10"/>
密码
<input name="password"type="text"size="10"/>
<input type="submit"name="search"value="查找"/>
</form>
<!--添加表头-->
<table border='1'>
<tr>
<td>用户名</td>
<td>口令</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<%
/////表中内容
//得到查找的用户和口令值
String username=request.getParameter("username");
String password=request.getParameter("password");
//得到查找的SQL
String sql="select * from user where 1=1 ";
if(username!=""&&username!=null)
sql+=" and username='"+username+"'";
if(password!=""&&password!=null)
sql+=" and password='"+password+"'";
//获取连接
Connection conn=AccessUserFromDB.getConnection();
//向数据库发送SQL指令
Statement stmt=conn.createStatement();
//执行指令并得到结果
ResultSet rs=stmt.executeQuery(sql);
//处理结果
while(rs.next())
{
String name=rs.getString("username");
//支持显示中文用户名
if(name!=""&&name!=null)
name=new String(name.getBytes("iso-8859-1"),"gb2312");
//支持显示中文口令
String pass=rs.getString("password");
if(pass!=""&&pass!=null)
pass=new String(pass.getBytes("iso-8859-1"),"gb2312");
//输出一行4列
out.print("<tr>");
out.print("<td>"+name+"</td>");
out.print("<td>"+pass+"</td>");
//删除,需要确认
out.print("<td><a href='DeleteUser?username="+name+"'
onclick=\"return confirm('Are you sure to delete it ?')\">删除</td>");
//修改
out.print("<td><a href='SearchAndModify.jsp?queryName="+name+"'>修改</td>");
out.print("</tr>");。

相关文档
最新文档