首页 >> 实验教学 >> 实验项目 >> 详细内容
实验教学
 
实验项目 >> 正文
Java Web程序设计
日期:2021-12-09 17:17:34  发布人:nclgjsj  浏览量:265

 

实验项目一

(一)实验项目名称:

内置对象的应用

(二)实验学时:

4

(三)实验性质(设计性?综合性?验证性?)

设计性、验证性  

(四)实验目的 

1. 掌握request对象的方法;

2. 掌握HTML标签的使用;

3. 掌握在JSP页面声明、使用方法。

4. Session内置对象与response内置对象的使用

 

(五)实验内容

1.编写三个JSP页面:login.jsp、dologin.jsp、success.jsp,实现功能: dologin.jsp校验login.jsp页面的输入内容并进行页面跳转。

2. 使用request内置对象实现一个计算器。

3.使用Session对象实现猜数字游戏。

4. 使用response对象实现用HTML类型、word类型或excel类型,显示同一个文件。

 

实验条件:

要求准备下列软件:Window 7、Eclipse IDE for Java EE软件、JDK 1.7Tomcat 7.0服务器。

(六)实验重点、难点

Request内置对象的使用

Session内置对象与response内置对象的使用

(七)具体实验操作过程

1、编写三个JSP页面:login.jsp、dologin.jsp、success.jsp,实现功能: dologin.jsp校验login.jsp页面的输入内容并进行页面跳转。

1.1 问题描述

编写三个jsp页面:login.jsp、dologin.jsp和success.jsp,将三个jsp页面保存在同一目录下。login.jsp页面结构如下:

 

dologin.jsp校验login.jsp页面的输入内容并进行页面跳转,内容如下:

1)、当用户不输入用户名和密码,直接点击“登录”时,跳回login.jsp页面。

2)、当用户只输入用户名或者只输入密码,就点击“登录”时,跳回login.jsp页面,并且将用户刚才输入的用户名或密码显示在对应的位置。

3)、当用户完整输入用户名和密码,点击“登录”时,跳转到success.jsp,并在该页面显示用户名,以及该用户是第几个用户。

1.2 参考实现过程

1)设计login.jsp

参考代码如下:

 

2)编写dologin.jsp

参考代码如下:

 

3)编写success.jsp

参考代码如下:

 

4)测试页面

5)思考:用户访问次数的记录特点,何时重新计数?用户名如果是中文会出现什么情况?如何解决?

2、使用request内置对象获取Cookie

2.1 问题描述

编写2个页面,分别为setcookie.jsp和getcookies.jsp,实现功能:在setcookie.jsp中创建5个cookie对象,其中有2个需要从接收的请求中的参数中来创建;getcookies.jsp文件实现获取cookie数组并输出

2.2 参考实现过程

1)设计setcookie.jsp页面,参考代码如下:

 

 

2)设计getcookie.jsp,参考代码如下:

 

3)测试页面

首先运行setcookie.jsp文件,创建cookie,运行的时候需要在请求后设置参数,再运行getcookie.jsp页面。

 

3、使用Session对象实现猜数字游戏。

3.1 问题描述

实现猜数字的小游戏。当客户访问服务器上的getNumber.jsp时,随机分配给客户一个1~100之间的整数,然后将这个整数存在客户的session对象中。客户在表单里输入一个整数,来猜测分配给自己的那个整数。客户输入一个整数后,提交给result.jsp,该页面负责判断这个整数是否和客户session对象中存在的那个整数相同,如果相同就连接到success.jsp;如果不相同就连接到large.jsp或small.jsp,然后,客户在这些页面再重新提交整数result.jsp,效果如下图所示:

 

 

 

3.2 参考实现过程

1)设计getNumber.jsp页面

 

2)设计result.jsp页面

 

 

3)设计large.jsp页面

 

4)设计small.jsp页面

 

5)设计succes.jsp页面

 

6)上机调试,测试页面

7)思考:本猜数字游戏能否用request内置对象实现?为什么?

 

4、使用response对象实现用HTML类型、word类型或excel类型,显示同一个文件。

4.1 问题描述

根据要求选择使用HTML类型、word类型或excel类型,显示同一个contentTypeData.txt文件。在contentType.jsp页面上选择不同按钮,然后单击“提交”按钮,由contentShow.jsp文件选择显示类型。效果图如下:

 

4.2 参考实现过程

1)contentType.jsp页面

 

2)contentShow.jsp页面

 

3)contentTypeData.txt文件

 

6)上机调试,测试页面

 

 

 

 

实验项目二

(一)实验项目名称:

JavaBean的应用

(二)实验学时:

4

(三)实验性质(设计性?综合性?验证性?)

设计性、综合性  

(四)实验目的

1. 掌握JavaBean的定义

2. 掌握JavaBean的使用

 

(五)实验内容

1.应用JavaBean制作留言本

2. 应用JavaBean解决中文乱码问题

 

实验条件:

要求准备下列软件:Window 7、Eclipse IDE for Java EE软件、JDK 1.7、Tomcat 7.0服务器。

(六)实验重点、难点

1. JavaBean在JSP页面中的应用

2. JavaBean应用程序的开发

 

(七)具体实验操作过程

1、应用JavaBean制作留言本

本实例的实现过程详见教材P108.

2、应用JavaBean解决中文乱码问题

设计一个定书程序,实现:可以进行定书功能并查看订单信息。要求:

1)编写工具JavaBean,解决如下乱码问题

 

5-1 输入书的相关信息(index.jsp)

 

5-2 提交后的页面(saveinfo.jsp)

 

5-3 书的详细信息(viewbook.jsp)

2)设计三个JSP页面,分别为index.jsp、saveinfo.jsp、viewbook.jsp页面和一个值JavaBean,其参考代码如下:

1)index.jsp页面

<FORM METHOD=POST ACTION="saveinfo.jsp"> 

<table border="1">

<tr><td> 书号 </td><td><INPUT TYPE="text" NAME="bid"></td></tr> 

<tr><td> 书名 </td><td><INPUT TYPE="text" NAME="bname"></td></tr> 

<tr><td> 数量 </td><td><INPUT TYPE="text" NAME="number"></td></tr> 

<tr><td> 作者 </td><td><INPUT TYPE="text" NAME="wr"></td></tr> 

</table> 

<INPUT TYPE="submit" value=" 保存 "> 

</FORM>

 

2)saveinfo.jsp页面

<jsp:useBean id="book" class="com.bookshop.order.BookBean"  scope="session"/> 

<jsp:setProperty name="book" property="*"/>

<a href="viewbook.jsp"> 查看书籍信息 </a>

 

3)viewbook.jsp页面

<jsp:useBean id="book" class="com.bookshop.order.BookBean" scope="session"/> 

<table border="1">

<tr><td> 书号 </td><td><jsp:getProperty name="book" property="bid"/></td></tr> 

<tr><td> 书名 </td><td><jsp:getProperty name="book" property="bname"/></td></tr> 

<tr><td> 数量 </td><td><jsp:getProperty name="book" property="number"/></td></tr> 

<tr><td> 作者 </td><td><jsp:getProperty name="book" property="wr"/></td></tr> 

</table>

 

4)值JavaBean-BookBean.java

package com.bookshop.order;

 

public class BookBean {

private String bid;

private String bname;

private int number;

private String wr;

…… //此处省略了get方法和set方法 

}

 

 

实验项目三

(一)实验项目名称:

Servlet的应用

(二)实验学时:

4

(三)实验性质(设计性?综合性?验证性?)

设计性、综合性

(四)实验目的 

1. 掌握Servlet的创建

2. 掌握Servlet在程序中的应用

 

(五)实验内容

1.应用Servlet实现留言板

2. 应用Servlet实现购物车

 

实验条件:

要求准备下列软件:Window 7、Eclipse IDE for Java EE软件、JDK 1.7Tomcat 7.0服务器。

(六)实验重点、难点

1. Servlet的创建

2. Servlet在程序中的应用

 

(七)具体实验操作过程

1、应用Servlet实现留言板

2、应用JavaBean实现购物车

1 创建封装商品信息的值JavaBean---------GoodsSingle

package com. valuebean;

public class GoodsSingle {

private String name; //保存商品名称

private float price;    //保存商品价格

private int num; //保存商品购买数量

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public float getPrice() {

return price;

}

public void setPrice(float price) {

this.price = price;

}

}

2 创建工具JavaBean------- MyTools实现字符型数据转换为整型及乱码处理

package com. toolbean;

import java.io.UnsupportedEncodingException;

public class MyTools {

public static int strToint(String str){      //String型数据转换为int型数据的方法

if(str==null||str.equals(""))

str="0";

    int i=0;

try{

i=Integer.parseInt(str);        //str 转换成 int 类型的变量

}catch(NumberFormatException e){      

              // try-catch就是监视try中的语句,如果抛出catch中声明的异常类型

i=0;

e.printStackTrace();               //Exception的详细信息打印出来

}

return i;

}

public static String toChinese(String str){ //进行转码操作的方法

if(str==null)

str="";

try {

str=new String(str.getBytes("ISO-8859-1"),"gb2312");

} catch (UnsupportedEncodingException e) {

str="";

e.printStackTrace();

}

return str;

}

}

3、创建购物车JavaBean------ ShopCar实现添加、删除等购物车功能。

package com.toolbean;

import java.util.ArrayList;

import com. valuebean.GoodsSingle;

public class ShopCar {

private ArrayList buylist=new ArrayList(); //用来存储购买的商品

public void setBuylist(ArrayList buylist) {

this.buylist = buylist;

}

/**

 * @功能 向购物车中添加商品

 * @参数 singleGoodsSingle类对象,封装了要添加的商品信息

 */

public void addItem(GoodsSingle single){

if(single!=null){

if(buylist.size()==0){ //如果buylist中不存在任何商品

GoodsSingle temp=new GoodsSingle();

temp.setName(single.getName());

temp.setPrice(single.getPrice());

temp.setNum(single.getNum());

buylist.add(temp); //存储商品

}

else{ //如果buylist中存在商品  

int i=0;

for(;i<buylist.size();i++){        //遍历buylist集合对象,判断该集合中是否已经存在当前要添加的商品

GoodsSingle temp=(GoodsSingle)buylist.get(i);                    //获取buylist集合中当前元素

if(temp.getName().equals(single.getName())){      //判断从buylist集合中获取的当前商品的名称是否与要添加的商品的名称相同

//如果相同,说明已经购买了该商品,只需要将商品的购买数量加1

temp.setNum(temp.getNum()+1); //将商品购买数量加1

break; //结束for循环 }

}

if(i>=buylist.size()){ //说明buylist中不存在要添加的商品

GoodsSingle temp=new GoodsSingle();

temp.setName(single.getName());

temp.setPrice(single.getPrice());

temp.setNum(single.getNum());

buylist.add(temp); //存储商品

}

}

}

}

/**

 * @功能 从购物车中移除指定名称的商品

 * @参数 name表示商品名称

 */

public void removeItem(String name){

for(int i=0;i<buylist.size();i++){          //遍历buylist集合,查找指定名称的商品

GoodsSingle temp=(GoodsSingle)buylist.get(i);   //获取集合中当前位置的商品  

if(temp.getName().equals(name)){      //如果商品的名称为name参数指定的名称 if(temp.getNum()>1){ //如果商品的购买数量大于1

temp.setNum(temp.getNum()-1); //则将购买数量减1

break;   //结束for循环

}

else if(temp.getNum()==1){ //如果商品的购买数量为1

buylist.remove(i); //buylist集合对象中移除该商品

}

}

}

}

}

4、创建实例首页面index.jsp,初始化商品信息

<%@ page contentType="text/html;charset=gb2312"%>

<jsp:forward page="/index"/>

5、创建处理用户访问首页面请求的Servlet--- IndexServlet

package com. servlet;

import java.io.IOException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import com. valuebean.GoodsSingle;

public class IndexServlet extends HttpServlet {

private static ArrayList goodslist=new ArrayList();

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request,response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session=request.getSession();

session.setAttribute("goodslist",goodslist);

response.sendRedirect("show.jsp");

}

static{       //静态代码块

String[] names={"苹果","香蕉","","橘子"};

float[] prices={2.8f,3.1f,2.5f,2.3f};

for(int i=0;i<4;i++){

GoodsSingle single=new GoodsSingle();

single.setName(names[i]);

single.setPrice(prices[i]);

single.setNum(1);

goodslist.add(single);

}

}

}

3 show.jsp显示商品信息

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.util.ArrayList" %>

<%@ page import="com.valuebean.GoodsSingle" %>

<% ArrayList goodslist=(ArrayList)session.getAttribute("goodslist"); %>

<table border="1" width="450" rules="none" cellspacing="0" cellpadding="0">

<tr height="50"><td colspan="3" align="center">提供商品如下</td></tr>

<tr align="center" height="30" bgcolor="lightgrey">

<td>名称</td>

<td>价格(/)</td>

<td>购买</td>

</tr>

<%  if(goodslist==null||goodslist.size()==0){ %>

<tr height="100"><td colspan="3" align="center">没有商品可显示!</td></tr>

<%

}

else{

for(int i=0;i<goodslist.size();i++){

GoodsSingle single=(GoodsSingle)goodslist.get(i);

%>

<tr height="50" align="center">

<td><%=single.getName()%></td>

<td><%=single.getPrice()%></td>

<td><a href="doCar?action=buy&id=<%=i%>">购买</a></td>

</tr>

<%

}

}

%>

<tr height="50">

<td align="center" colspan="3"><a href="shopcar.jsp">查看购物车</a>

</td>

</tr>

</table>

6、创建处理用户购买、移除、清空购物车请求的Servlet Servlet--- BuyServlet

package com.servlet;

import java.io.IOException;

import java.util.ArrayList;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

import com. toolbean.MyTools;

import com.toolbean.ShopCar;

import com.valuebean.GoodsSingle;

public class BuyServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request,response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

String action=request.getParameter("action"); //获取action参数值

if(action==null)

action="";

if(action.equals("buy")) //触发了“购买”请求

buy(request,response); //调用buy()方法实现商品的购买

if(action.equals("remove")) //触发了“移除”请求

remove(request,response); //调用remove()方法实现商品的移除

if(action.equals("clear")) //触发了“清空购物车”请求

clear(request,response); //调用clear()方法实现购物车的清空

}

//实现购买商品的方法

protected void buy(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session=request.getSession();

String strId=request.getParameter("id"); //获取触发“购买”请求时传递的id参数,该参数存储的是商品在goodslist对象中存储的位置

int id=MyTools.strToint(strId);

ArrayList goodslist=(ArrayList)session.getAttribute("goodslist");

GoodsSingle single=(GoodsSingle)goodslist.get(id);

ArrayList buylist=(ArrayList)session.getAttribute("buylist"); //session范围内获取存储了用户已购买商品的集合对象

if(buylist==null)

buylist=new ArrayList();

ShopCar myCar=new ShopCar();

myCar.setBuylist(buylist); //buylist对象赋值给ShopCar类实例中的属性

myCar.addItem(single); //调用ShopCar类中addItem()方法实现商品添加操作

session.setAttribute("buylist",buylist);

response.sendRedirect("show.jsp"); //将请求重定向到show.jsp页面

}

//实现移除商品的方法

protected void remove(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session=request.getSession();

ArrayList buylist=(ArrayList)session.getAttribute("buylist");

String name=request.getParameter("name");

ShopCar myCar=new ShopCar();

    myCar.setBuylist(buylist);//buylist对象赋值给ShopCar类实例中属性

myCar.removeItem(MyTools.toChinese(name));

                        //调用ShopCar类中removeItem ()方法实现商品移除操作

response.sendRedirect("shopcar.jsp");

}

//实现清空购物车的方法

protected void clear(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

HttpSession session=request.getSession();

ArrayList buylist=(ArrayList)session.getAttribute("buylist"); //session范围内获取存储了用户已购买商品的集合对象

buylist.clear();//清空buylist集合对象,实现购物车清空的操作

response.sendRedirect("shopcar.jsp");

}

}

7、在web.xml文件中配置Servlet

<?xml version="1.0" encoding="UTF-8"?>

<web-app>

<!-- 配置IndexServlet -->

<servlet>

<servlet-name>indexServlet</servlet-name>

<servlet-class>com.yxq.servlet.IndexServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>indexServlet</servlet-name>

<url-pattern>/index</url-pattern>

</servlet-mapping>

<!-- 配置BuyServlet -->

<servlet>

<servlet-name>buyServlet</servlet-name>

<servlet-class>com.yxq.servlet.BuyServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>buyServlet</servlet-name>

<url-pattern>/doCar</url-pattern>

</servlet-mapping>

</web-app>

8、创建页面shopcar.jsp购物车

<%@ page contentType="text/html;charset=gb2312"%>

<%@ page import="java.util.ArrayList" %>

<%@ page import="com. valuebean.GoodsSingle" %>

<%

//获取存储在session中用来存储用户已购买商品的buylist集合对象

ArrayList buylist=(ArrayList)session.getAttribute("buylist");

float total=0; //用来存储应付金额

%>

<table border="1" width="450" rules="none" cellspacing="0" cellpadding="0">

<tr height="50"><td colspan="5" align="center">购买的商品如下</td></tr>

<tr align="center" height="30" bgcolor="lightgrey">

<td width="25%">名称</td>

<td>价格(/)</td>

<td>数量</td>

<td>总价()</td>

<td>移除(-1/)</td>

</tr>

<% if(buylist==null||buylist.size()==0){ %>

<tr height="100"><td colspan="5" align="center">您的购物车为空!</td></tr>

<%

}

else{

for(int i=0;i<buylist.size();i++){

GoodsSingle single=(GoodsSingle)buylist.get(i);

String name=single.getName(); //获取商品名称

float price=single.getPrice(); //获取商品价格

int num=single.getNum();   //获取购买数量

float money=((int)((price*num+0.05f)*10))/10f;

                                     //计算当前商品总价,并进行四舍五入

total+=money;           //计算应付金额

%>

<tr align="center" height="50">

<td><%=name%></td>

<td><%=price%></td>

<td><%=num%></td>

<td><%=money%></td>

<td><a href="doCar?action=remove&name=<%=single.getName() %>">移除</a></td>

</tr>

<%

}

}

%>

<tr height="50" align="center"><td colspan="5">应付金额:<%=total%></td></tr>

<tr height="50" align="center">

<td colspan="2"><a href="show.jsp">继续购物</a></td>

<td colspan="3"><a href="doCar?action=clear">清空购物车</a></td>

</tr>

</table>

 

实验项目四

(一)实验项目名称:

JSP访问数据库的应用

(二)实验学时:

4

(三)实验性质(设计性?综合性?验证性?)

验证性、设计性

(四)实验目的 

1. 掌握JSP中SQL Server 2008数据库的连接;

2. 掌握JSP中Access数据库的连接;

3. 掌握JSP中MySQL数据库的连接。

 

(五)实验内容

1.JSP中连接SQL Server 2008数据库;

2. JSP中连接Access数据库;

3. JSP中连接MySQL数据库;

4. 创建Access数据库,配置ODBC数据源,连接数据库。

 

实验条件:

要求准备下列软件:Window 7、Eclipse IDE for Java EE软件、JDK 1.7Tomcat 7.0服务器、SQL Server 2008、Access、MySQL

(六)实验重点、难点

1. JSP中连接SQL Server 2008数据库;

2. JSP中连接Access数据库;

3. JSP中连接MySQL数据库。

 

(七)具体实验操作过程

1、JSP中连接SQL Server 2008数据库

本实例的实现过程详见教材P177页例8-1

2、JSP中连接Access数据库

本实例的实现过程详见教材P178页例8-2

3、JSP中连接MySQL数据库

本实例的实现过程详见教材P178页例8-3

4、创建Access数据库,配置ODBC数据源,连接数据库

4.1 问题描述

创建Access数据库,然后创建一个学生信息表并且录入数据,接着配置ODBC数据源,最后连接该数据库。

4.2 实验参考过程

1)创建数据库

采用ACCESS数据库,创建一个学生数据库,其中有一个数据表是学生信息数据表。

数据表中信息如下:

字段名称

数据类型

说明

No

Char

学号

Name

Char

姓名

Sex

Char

性别

Age

Char

年龄

 

期中,将学号no设置为主键,保存为student_info;然后,在该数据表中录入几条记录。

2)创建该数据库的ODBC数据源

开始-〉控制面板-〉管理工具-〉ODBC数据源 -> 选择系统数据源

点击添加

选择ACCESS数据库

点击完成,出现如下所示

在数据源名中输入:student

点击选择,选择你数据库所在文件夹的位置

点击确定

3)熟悉语法规则

  • 加载驱动程序的语法如下:

Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”)

  • 打开数据库连接的语法如下:

Connection Connection 对象变量=DriverManager.getConnection(“jdbc:odbc:ODBC 数据源名称”,”使用者账号”,”密码”)

  • 关闭数据库连接的语法如下:

Connection 对象变量.close()

4)参考程序代码

程序代码:

<%@ page contentType=”text/html;charset=GB2312”%>

<%@ page import=”java.sql.*”%>

<%@ page language=”java”%>

<html>

<head>

<title>数据库连接的建立与关闭</title>

</head>

<body>

<!—建立与数据库的连接-->

<%

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Connection conDB=DriverManager.getConnection("jdbc:odbc:student");

%>

已经建立与数据库的连接

<%

conDB.close();

%>

已经关闭数据库的连接

</body>

</head>

</html>

5)上机调试

6)分析结果

 

 

核发:nclgjsj 点击数:265收藏本页