实验项目一
(一)实验项目名称:
内置对象的应用
(二)实验学时:
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.7、Tomcat 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.7、Tomcat 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;
}
/**
* @功能 向购物车中添加商品
* @参数 single为GoodsSingle类对象,封装了要添加的商品信息
*/
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.7、Tomcat 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)分析结果