jsp实验指导书.docx
《jsp实验指导书.docx》由会员分享,可在线阅读,更多相关《jsp实验指导书.docx(33页珍藏版)》请在冰豆网上搜索。
![jsp实验指导书.docx](https://file1.bdocx.com/fileroot1/2023-8/19/1bc6d65b-98b9-42c9-aadd-5cf1f82c34c9/1bc6d65b-98b9-42c9-aadd-5cf1f82c34c91.gif)
jsp实验指导书
实验一JSP实验环境组建与简单JSP应用
实验目的:
熟悉JSP开发环境,使用开发环境进行JSP程序开发。
实验要求:
安装JDK,Tomcat,MyEclipse/Eclipse,并建立一个简单Web应用且发布测试。
实验步骤:
1.安装JDK;
2.安装Tomcat;
3.安装MyEclipse或Eclipse;
4.建立一个Web应用,在index.jsp中显示“您好,这是我的第一个JSP站点。
”;
发布测试。
index.jsp页面代码:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
MyJSP'index.jsp'startingpage您好,这是我的第一个JSP站点。
实验二JSP语法的应用
实验目的:
掌握jsp基本语法。
掌握JSP中page标签的使用。
掌握JSP中forward动作标签的使用。
掌握jsp中include动作标签的使用。
实验要求:
编写三个JSP页面:
main.jsp、circle.jsp和ladder.jsp,将三个JSP页面保存在同一Web服务目录中。
main.jsp使用include动作标记加载circle.jsp和ladder.jsp页面。
circle.jsp页面可以计算并显示圆的面积,ladder.jsp可以计算并显示梯形的面积。
当circle.jsp和ladder.jsp被加载时获取main.jsp页面include动作标记的param子标记提供的圆的半径以及梯形的上底、下底和高的值。
实验步骤:
1.编写main.jsp
加载circle.jsp页面代码如下:
请同学们编写加载梯形的代码,并传递参数。
2.编写circle.jsp
核心代码如下:
3.编写ladder.jsp
请同学们根据题目要求编写该页面
4.测试页面
结果如图所示:
5.思考
如何能够将圆的半径和梯形的个边实现动态输入?
实验三request内置对象的应用
实验目的:
1.掌握form表单提交信息;
2.掌握request对象的方法;
3.掌握在jsp页面声明、使用方法;
实验要求:
编写三个jsp页面:
login.jsp、dologin.jsp和success.jsp,将三个jsp页面保存在同一目录下。
login.jsp页面结构如下:
dologin.jsp校验login.jsp页面的输入内容并进行页面跳转,内容如下:
1)当用户不输入用户名和密码,直接点击“登录”时,跳回login.jsp页面。
2)当用户只输入用户名或者只输入密码,就点击“登录”时,跳回login.jsp页面,并且将用户刚才输入的用户名或密码显示在对应的位置。
3)当用户完整输入用户名和密码,点击“登录”时,跳转到success.jsp,并在该页面显示用户名,以及该用户是第几个用户。
实验步骤:
1.设计login.jsp
2.编写dologin.jsp
3.编写success.jsp
4.测试页面
5.思考
用户访问次数的记录特点,何时重新计数?
实验四猜数字游戏
实验目的:
1.掌握session对象的使用
实验要求:
实现猜数字的小游戏。
当客户访问服务器上的getNumber.jsp时,随机分配给客户一个1~100之间的整数,然后将这个整数存在客户的session对象中。
客户在表单里输入一个整数,来猜测分配给自己的那个整数。
客户输入一个整数后,提交给result.jsp,该页面负责判断这个整数是否和客户session对象中存在的那个整数相同,如果相同就连接到success.jsp;如果不相同就连接到large.jsp或small.jsp,然后,客户在这些页面再重新提交整数result.jsp,效果如下图所示:
实验步骤:
1.getNumber.jsp
2.Result.jsp
3.large.jsp
4.small.jsp
success.jsp
实验五Javabean的应用
实验目的:
掌握利用Javabean组件实现JSP的基本应用;掌握jspSmartUpload提供的API。
实验要求:
(编写一个JSP页面,该页面提供一个表单,用户通过表单输入正方形的边长后提交给本页面,JSP页面将计算正方形面积和周长的任务交给一个JavaBean去完成,并将计算结果在另外一个JSP页面中显示出来。
实验步骤:
1.创建名称为Square.java的JavaBean文件,代码如下:
packagesquare;
publicclassSquare{
privateintside=1;//定义私有变量side表示正方形的边长
publicSquare(){//无参的构造函数
}
publicintgetSide(){
returnside;//返回变量side的值
}
publicvoidsetRadius(intnewSide){
side=newSide;//给变量side赋值
}
publicdoublesquareLength(){
returnside*4.0;//计算正方形的周长
}
publicdoublesquareArea(){
returnside*side;//计算正方形的面积
}
}
2.创建名称为sideInput.jsp的页面文件,该页面文件的代码如下:
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
计算正方形的周长与面积
请输入圆的半径:
3.创建名称为square.jsp的页面文件,该页面文件的代码如下:
<%@pagecontentType="text/html;charset=gb2312"language="java"%>
计算正方形的周长与面积useBeanid="squareBean"scope="session"class="square.Square"/>
<%
intside=Integer.parseInt(request.getParameter("side"));
squareBean.setSide(side);
out.println("正方形的边长为:
"+squareBean.getSide());
out.println("
");
out.println("正方形的周长为:
"+squareBean.squareLength());
out.println("
");
out.println("正方形的面积为:
"+squareBean.squareArea());
%>
4.程序执行过程如图所示:
实验六Servlet的应用
实验目的:
熟悉Servlet接口及其中规定的方法和意义;掌握Servlet编写、部署和运行。
实验要求:
当请求Servlet时,出现一个包含文本框、密码框和提交按钮的界面,当输入用户名和密码,单击【登录】按钮后,将用户的信息放入HttpSession中,并输出欢迎当前用户登录的信息。
实验步骤:
1.创建一个Web工程,名称为login。
2.在工程的sunyang包下创建一个Servlet类LoginServlet.java,该类用来输出登录页面和欢迎用户登录的信息。
类LoginServlet的代码如下:
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
publicclassLoginServletextendsHttpServlet{
protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
this.doPost(req,resp);
}
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
resp.setCharacterEncoding("GBK");//设置响应的编码类型为GBK
PrintWriterout=resp.getWriter();//获取输出对象
out.println("");
out.println("
");
out.println("
用户登录");
out.println("");
out.println("
");
HttpSessionsession=req.getSession();//获取HttpSession实例
BooleanisLogin=(Boolean)session.getAttribute("isLogin");
if(isLogin==null){
isLogin=false;
}
Stringname=req.getParameter("username");//获取表单上的用户名
Stringpassword=req.getParameter("password");//获取表单上的密码
if(isLogin==true){
name=(String)session.getAttribute("name");
out.println("
欢迎"+name+"登录
");
}elseif(name!
=null&&password!
=null){
session.setAttribute("name",name);//把用户名保存在HttpSession中
session.setAttribute("password",password);//把密码保存在HttpSession中
//把判断用户是否登录的字段保存在HttpSession中
session.setAttribute("isLogin",true);
out.println("
欢迎"+name+"登录
");
}else{
out.println("
用户登录
");
out.println("");
out.println("用户名:
");
out.println("
");
out.println("密码:
");
out.println("
");
out.println("");
out.println("");
out.println("");
}
out.println("");
out.println("");
}
}
3.在web.xml中配置LoginServlet,配置的代码如下:
xmlversion="1.0"encoding="UTF-8"?
>
xmlns="
xmlns:
xsi="http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
--配置Servlet-->
LoginServlet
sunyang.LoginServlet
--配置Servlet映射路径-->
LoginServlet
/login
4.发布并运行程序,如下图所示:
输入用户名和密码,单击【登录】按钮,出现如下图所示的界面:
实验七JSP访问数据库的应用
实验目的:
掌握JSP+Servlet+JavaBean架构连接、查询、删除数据库的方法;
实验要求:
采用JSP+Servlet+JavaBean架构,设计通过下列JSP页面访问数据库(如表5-1),具体要求如下:
1.添加用户页面(AddUser.jsp),如图7-1所示;
2.删除用户页面(Delete.jsp),如图7-1所示;
3.查找和修改用户页面(SearchAndModify.jsp),如图7-3所示。
图7-1添加用户页面
图7-2删除用户页面
图7-3查询和修改用户页面
实验步骤:
1.准备需要访问的数据库
下载并安装MySQL5.0
CopyMySQL5.0驱动mysql-connector-java-5.0.8-bin.jar到%TOMCAT%\lib文件夹下创建数据库及表:
数据库的设计如下表:
数据库采用MySQL5.0,数据库名:
db,表名:
user(用户表)
表5-1数据库的用户表
序号
列名
数据类型
长度
主键
允许空
默认值
说明
1
username
varchar
40
是
否
用户名
2
password
varchar
40
是
口令
创建过程如下:
(可选择使用MySQL的数据库管理和开发工具Navicat和MySQL-Front等)
Step1:
进入MySQL程序的MySQLCommandLineClient界面,如下图所示
Step2:
分别执行下列命令:
//支持中文
①创建数据库:
CREATEDATABASE`db`
CHARACTERSET'utf8'
COLLATE'utf8_general_ci';
USEDB;
②建表:
CREATETABLE`user`(
`username`varchar(20)NOTNULLPRIMARYKEY,
`password`varchar(20)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
开发过程如下:
Step1:
创建值JavaBean:
User.java,内容如下:
packagevalueBean;
publicclassUser{
privateStringusername;//用户名
privateStringpassword;//口令
publicUser()
{
this.username="";
this.password="";
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetUsername(){
returnusername;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringgetPassword(){
returnpassword;
}
}
Step2:
创建访问数据库的类—AccessUserFromDB.java,内容如下:
packagetoolBean.db;
importjava.sql.*;
importvalueBean.User;
publicclassAccessUserFromDB{
privatestaticConnectionconn=null;
privatestaticStatementstmt=null;
//构造函数中完成对数据库进行初始化
publicAccessUserFromDB(){
//创建连接
conn=this.getConnection();
try{
//创建Statement
stmt=conn.createStatement();
}catch(SQLExceptione){
e.printStackTrace();
}
}
//将对象user添加到表中
publicvoidAdd(Useruser)throwsSQLException
{
Stringsql="INSERTINTOuser(username,password)VALUES('"
+user.getUsername()+"','"+user.getPassword()+"')";
stmt.executeUpdate(sql);
}
//根据用户名(关键字)从数据库删除相应的记录
publicvoidDelete(Stringusername)throwsSQLException
{
Stringsql="DeleteFromuserWhereusername='"+username+"'";
stmt.executeUpdate(sql);
}
//修改数据库中的user
publicvoidUpdate(Useruser)throwsSQLException
{
Stringsql="UPDATEusersetpassword='"
+user.getPassword()+"'whereusername='"+user.getUsername()+"'";
stmt.executeUpdate(sql);
}
//根据用户名称(关键字)从数据库中查找记录,并将找到的记录写入对象user中返回
publicUsersearchByUsername(Stringusername)throwsSQLException
{
Useruser=newUser();
Stringsql="select*fromuserwhereusername='"+username+"'";
ResultSetrs=stmt.executeQuery(sql);
while(rs.next())
{
Stringname=rs.getString("username");
if(name.equals(username))
{
//将从数据库查找得到的记录存入对象user中
user.setUsername(name);
user.setPassword(rs.getString("password"));
if(rs!
=null)
rs.close();
returnuser;
}
}
returnnull;//查找不到返回null
}
//根据用户判断该记录是否存在
publicbooleanexists(Stringusername)
{
booleanrtn=false;
try{
if(searchByUsername(username)!
=null)
rtn=true;
}catch(SQLExceptione){
e.printStackTrace();
}