《[工学]Web程序设计JSP实验.doc》由会员分享,可在线阅读,更多相关《[工学]Web程序设计JSP实验.doc(31页珍藏版)》请在三一办公上搜索。
1、Web程序设计(JSP)实验WEB程序设计(JSP)实验计算机科学与信息学院 汪国武实验一 JSP实验环境组建与简单JSP应用1 开发环境搭建Step1:安装和设置JDK以jdk1.6为例,安装位置C:Program FilesJavajdk1.6.0_12创建环境变量:JAVA_HOME为C:Program FilesJavajdk1.6.0_12在建环境变量PATH中添加:%JAVA_HOME%bin;创建环境变量CLASSPATH:%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;Step2:安装支持JSP的Web服务器以Tomcat6.0.29为
2、例,安装位置d:Tomcat6Step3:安装MyEclipse安装MyEclipse7.0Step4:设置Tomcat,可以从MyEclipse中直接启动Tomcat6操作步骤:WindowPreferencesMyEclipse Enterprise Workbench MyEclipseServersTomcatTomcat6.x l Tomcat Server选择Enablel Tomcat home directory:d:tomcat6l 设置Tomcat运行使用的JDK:展开Tomcat6.x,单击JDK,单击tomcat JDK name:后的Add,在打开的页面中,单击JRE
3、 home后的Directory按钮,选择输入C:Program FilesJavajdk1.6.0_122.开发和运行JSP程序n 创建Web项目FileNewWeb Project(如:Myjsp)n 新建JSP文件(如firstJsp.jsp)n 编辑JSP文件(可借助DreamWeaver)n 发布项目到Tomcat右击项目名称MyjspMyEclipseAdd and Remove Project DeploymentsProject:选择Myjsp项目,并单击Add,弹出Project Deployments对话框,在对话框中,选择server为Tomcat 6.x,并单击Fini
4、shn 运行测试n 启动Tomcat 6.xn 运行JSP文件浏览器中输入:http:/localhost:8080/Myjsp/firstJsp.jsp3.编写一个JavaScript程序,在JSP页面上输出当前日期。参考答案:var mydate=new Date();document.write(今天是+mydate.getFullYear()+年+(mydate.getMonth()+1)+月+mydate.getDate()+日);实验二 JSP语法的应用实验内容和要求:1 实现客户在一个登录页面form.jsp(如图2-1)输入登录信息并单击“确定”后跳转到另一个页面doForm.
5、jsp(如图2-2)输出“用户名”和“口令”信息。图2-1图2-2要求:分别用下列三种方法实现。(1) 创建一个JavaBean-User类,该类含有两个属性username和password,给每个属性增加相应的get和set方法。在doForm.jsp页面中用动作标识实例化User类对象,再使用动作标识来把客户在form.jsp表单中填写的值赋给对象,最后用在页面输出结果。(2) 创建一个JavaBean-User类,该类含有两个属性username和password,给每个属性增加相应的get和set方法。在doForm.jsp页面中采用Java以jsp脚本代码(scriptlet)方式
6、实例化User类对象,用setAttribute()函数把对象写入request或session中,再使用动作标识来把客户在form.jsp表单中填写的值赋给对象,最后用jsp表达式的方式把对象的信息输出到页面中。(3) 不创建JavaBean-User类。在doForm.jsp页面中用getParameter()来获取客户在form.jsp表单中填写的值,最后输出相关信息。课外作业:实验三 JSP内置对象的应用实验内容和要求:对实验二的内容进行扩展,必须实现以下4个jsp文件,采用jsp+JavaBean实现。(1) login.jsp:登录页面,如图2-1所示。(2) doLogin.js
7、p(无界面):登录处理页面,假定正确的用户名为admin,口令为123。如果用户名和口令不正确则显示登录错误信息,否则登录成功后,重定向到messageBoard.jsp(留言板页面),可以进行留言。(3) messageBoard.jsp: 留言板页面,能实现如图3-1所示的留言。图3-1(4) showMessage.jsp:显示留言信息页面,如图3-2所示。该页面能显示留言者(必须为login.jsp页面中输入的用户名)、标题和内容,要求能正确显示图3-1所示的留言内容。提示:留言者的用session保存图3-2实验四 Servlet的应用实验内容和要求:用Servlet来完成实验三的所
8、有任务,即先登录,然后留言,再显示留言。采用JSP+JavaBean+Servlet开发模式。实验步骤如下:1 创建登录页面login.jsp 用户名:口 令:2 创建处理登录的Servlet:DoLogin.java,过程如下:选择项目中src文件夹,NewServlet,弹出Create a new Servlet对话框,设置如下(05为项目名称)单击next后,见下图,只对Servlet/Jsp Mapping URL:作如下修改,单击finish.此时,web.xml中应存在如下Servlet配置信息: ServletExample firstServlet DoLogin servl
9、et.DoLogin DoLogin /DoLogin其中,/DoLogin行表明,该Servlet可以用这个URL访问,http:/localhost:8080/05/DoLoginDoLogin.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;i
10、mport 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.ge
11、tParameter(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); /重定向到
12、留言页面else response.sendError(500,登陆错误,用户名或密码不正确!);3 创建留言页面messageBoard.jsp留言标题:留言内容:4 创建值JavaBean:Message.java同代码3-55 创建工具JavaBean:Mytools.java同代码3-66 创建处理留言的Servlet:DoMessage.java,如下图:DoMessage.java代码如下:package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.Reques
13、tDispatcher;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
14、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中
15、/下面2行实现转发到showMessage.jspRequestDispatcher dispatcher=request.getRequestDispatcher(showMessage.jsp);dispatcher.forward(request, response);7 创建显示留言页面showMessage.jsp 显示留言信息留言者:留言标题:留言内容:实验五 JSP访问数据库的应用实验要求:采用JSP+Servlet+JavaBean架构,设计通过下列JSP页面访问数据库(如表5-1),具体要求如下:1添加用户页面(AddUser.jsp),如图5-1所示;2. 删除用户页面(D
16、elete.jsp), 如图5-1所示;3查找和修改用户页面(SearchAndModify.jsp), 如图5-3所示。图5-1 添加用户页面图5-2 删除用户页面图5-3 查询和修改用户页面实验步骤如下:1准备需要访问的数据库n 下载并安装MySQL5.0n Copy MySQL5.0驱动mysql-connector-java-5.0.8-bin.jar到%TOMCAT%lib文件夹下n 创建数据库及表:数据库的设计如下表:数据库采用MySQL5.0,数据库名:db,表名:user(用户表)表5-1 数据库的用户表序号列名数据类型长度主键允许空默认值说明1usernamevarchar4
17、0是否用户名2passwordvarchar40是口令创建过程如下:(可选择使用MySQL的数据库管理和开发工具Navicat 或 MySQL-Front等)Step1:进入MySQL程序的MySQL Command Line Client界面,如下图所示Step2:分别执行下列命令: /设置utf8支持在表中存贮中文 创建数据库: CREATE DATABASE dbCHARACTER SET utf8COLLATE utf8_general_ci;USE db;/使用db数据库 建表:CREATE TABLE user (username varchar(20) NOT NULL PRIM
18、ARY 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()this.username=;this.password=;public void setUsername(String username) this.usern
19、ame = 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 valueBean.User;public class AccessU
20、serFromDB private static Connection conn=null;private static Statement stmt=null;/构造函数中完成对数据库进行初始化public AccessUserFromDB() /创建连接conn=this.getConnection();try /创建Statementstmt=conn.createStatement(); catch (SQLException e) e.printStackTrace();/将对象user添加到表中public void Add(User user) throws SQLExcepti
21、onString sql=INSERT INTO user(username,password) VALUES(+user.getUsername()+,+user.getPassword()+);stmt.executeUpdate(sql); /根据用户名(关键字)从数据库删除相应的记录public void Delete(String username) throws SQLExceptionString sql=Delete From user Where username=+username+;stmt.executeUpdate(sql);/修改数据库中的userpublic vo
22、id Update(User user) throws SQLExceptionString sql=UPDATE user set password=+user.getPassword()+ where username=+user.getUsername()+;stmt.executeUpdate(sql); /根据用户名称(关键字)从数据库中查找记录,并将找到的记录写入对象user中返回public User searchByUsername(String username) throws SQLExceptionUser user=new User();String sql=selec
23、t * 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/根据用户判断
24、该记录是否存在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:/
25、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.printSt
26、ackTrace();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,代码如下:添加用户添加用户用户名: 密 码: 相应的添加用户Servlet(AddUser.jav
27、a),代码如下:package servlet.user; /需要创建的包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 toolBe
28、an.db.AccessUserFromDB;import valueBean.User;public class AddUser extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /返回上页String goBack=返回上页;response.setContentType(text/html;charset=gb2312);PrintWriter out = response.
29、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();
30、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,代码如下:删除用户删除用户输入删除的用户名 相
31、应的删除用户Servlet (DeleteUser.java)的代码,如下:package servlet.user;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.HttpServlet
32、Response;import toolBean.db.AccessUserFromDB;import valueBean.User;public class DeleteUser extends HttpServlet public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /返回上页String goBack=返回上页;response.setContentType(text/html;charset=gb2312);Pr
33、intWriter 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(); 创建查找和修改页面(SearchAndMo