实验报告
学生姓名:学号:6100411 专业班级:计科班
实验类型:□验证□综合□设计□创新实验日期:2014/11 实验成绩:实验二JSP编程-班级通讯录
一、实验目的
1、掌握JSP的基本语法;
2、掌握JSP程序的基本处理流程;
3、理解内置对象request,response,session等的用法。
4、掌握EL和JSTL的使用;
5、掌握JDBC编程;
6、理解JavaBean和Servlet的含义,掌握MVC编程方式。
二、实验要求
1、首页用户登录,验证通过后,进入班级通讯录列表页;
2、通讯录列表需按每页5条记录分页显示,并且允许对每条记录进行修改(学号不允许修改)和删除,该页还应提供到增加新同学页面的超链接;
3、增加新同学的页面为表单页,可以考虑增加表单输入的有效性验证(非必须)。注意:同一个学号的同学不应重复录入;
4、要求本项目采用JSP Model2架构,即采用JSP+JavaBean+Servlet的编程方式;
5、要求所创建项目名称为自己的学号后四位。
三、实验代码
(1)登录代码(.jsp)
loginForm.jsp
<%@page language="java"pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>通讯录登录</title>
</head>
<body>
<form action="loginConf.jsp"method="post">
查看班级通讯录登录
<table>
<tr>
<td colspan="2"><font color="red">${}</font></td> </tr>
<tr>
<td>用户名</td>
<td><input type="text"name="username"/></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password"name="upassword"/></td>
</tr>
<tr>
<td><input type="submit"value="登录"></td>
<td><input type="reset"value="重置"/></td>
</tr>
</table>
</form>
</body>
</html>
loginConf.jsp
<%@page language="java"pageEncoding="gb2312"%>
<%@taglib prefix="c"uri="java.sun/jsp/jstl/core"%>
<html>
<head>
<title>登录判断页面</title>
</head>
<body>
<c:if test="${empty param.username }">
<%
request.setAttribute("error","用户名不能为空,请输入用户名");
%>
<jsp:forward page="loginForm.jsp"></jsp:forward>
</c:if>
<c:if test="${empty param.upassword }">
<%
request.setAttribute("error","密码不能为空,请输入密码");
%>
<jsp:forward page="loginForm.jsp"></jsp:forward>
</c:if>
<c:choose>
<c:when test="${param.username =='dsq'}">
<c:if test="${param.upassword =='dsq'}">
<jsp:forward page="ShowStudentByPage.jsp"></jsp:forward> </c:if>
<jsp:forward page="loginFailure.jsp"></jsp:forward>
</c:when>
<c:otherwise>
<jsp:forward page="loginFailure.jsp"></jsp:forward>
</c:otherwise>
</c:choose>
<%--
StudentDAO studentDAO = StudentDAOInstance();
String Parameter("user");
String Parameter("Password");
boolean flag=studentDAO.finduser(user,Password);
if(flag)
{
request.setAttribute("error","用户名或密码错误,请重新输入");                      <jsp:forward page="loginFailure.jsp"></jsp:forward>
<%}else %>
<jsp:forward page="ShowStudentByPage.jsp"></jsp:forward> --%>
</body>
</html>
loginFailure.jsp
<%@page language="java"pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录失败页面</title>
</head>
<body>
<h1>抱歉,登录失败!</h1>
<table>
<tr>
<td>是否重新登录:<a href="loginForm.jsp">是</a></td>
</tr>
<tr>
<td>若不登录,请关闭页面!</td>
</tr>
</table>
</body>
</html>
(2)登录成功后的代码(.jsp)
分页代码
ShowStudentByPage.jsp
<%@page language="java"pageEncoding="gb2312"import="java.util.List"%> <%@page import="com.songqing.dao.StudentDAO"%>
<%@page import="com.songqing.dao.StudentDAOImpl"%>
<%@taglib prefix="c"uri="java.sun/jsp/jstl/core"%>
<%@taglib prefix="fmt"uri="java.sun/jsp/jstl/fmt"%>
<%@page import="com.songqing.factory.StudentDAOFactory"%>
<%@page import="com.songqing.bean.Student"%>
<html>
<head>
<title>
计算机112班级通讯录
</title>
</head>
<body>
<%!int pageSize=5;
int pageCount;
int showPage;
%>
<%
//通过DAO工厂类获得DAO实现类实例
StudentDAO studentDAO = StudentDAOInstance();
int RecordCount("");
//计算分页后的总数
pageCount=(recordCount%pageSize==0)?(recordCount/pageSize):(recordCount/pageSi ze+1);
//获取用户想要显示的页数:
String Parameter("showPage");
if(integer==null){
integer="1";
}
try
{
showPage=Integer.parseInt(integer);
}
catch(NumberFormatException e){
showPage=1;
}
if(showPage<=1){
showPage=1;
}
if(showPage>=pageCount){
showPage=pageCount;
}jsp定义
List<Student> studentList = studentDAO.findStudentByPage(showPage,pageSize,"");
pageContext.setAttribute("studentList",studentList);
//如果要显示第showPage页,那么游标应该移动到的position的值是:
int position=(showPage-1)*pageSize+1;
%>
计算机112班级通讯录
<table width="700"border="1">
<tr>
<td>学生学号</td>
<td>学生姓名</td>
<td>学生年龄</td>
<td>学生电话</td>
<td>修改</td>
<td>删除</td>
</tr>
<c:forEach var="student"items="${pageScope.studentList}"><%-- 循环输出学生信息 --%>
<tr>