2024年4月9日发(作者:)
实验报告
学生姓名: 学 号: 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)
<%@ page language=
"java"
pageEncoding=
"gb2312"
%>
<%@ page language=
"java"
pageEncoding=
"gb2312"
%>
<%@ taglib prefix=
"c"
uri=
"/jsp/jstl/core"
%>
" ${empty me } " > <% ribute("error","用户名不能为空,请输入用户名"); %> "" >
" ${empty ord } " > <% ribute("error","密码不能为空,请输入密码"); %> "" >
" ${me =='dsq'} " > " ${ord =='dsq'} " > "" > "" >
"" >
<%--
StudentDAO studentDAO = dentDAOInstance();
String user=ameter("user");
String Password=ameter("Password");
boolean flag=er(user,Password);
if(flag)
{
ribute("error","用户名或密码错误,请重新输入");
<%}else %>
<%@ page language=
"java"
pageEncoding=
"gb2312"
%>
抱歉,登录失败!
是否重新登录: "" >是 |
若不登录,请关闭页面! |
(2)登录成功后的代码(.jsp)
分页代码
<%@page language=
"java"
pageEncoding=
"gb2312"
import=
""
%>
<%@page import=
"tDAO"
%>
<%@page import=
"tDAOImpl"
%>
<%@ taglib prefix=
"c"
uri=
"/jsp/jstl/core"
%>
<%@ taglib prefix=
"fmt"
uri=
"/jsp/jstl/fmt"
%>
<%@page import=
"tDAOFactory"
%>
<%@page import=
"t"
%>
计算机112班级通讯录
<%! int pageSize=5;
int pageCount;
int showPage;
%>
<%
//通过DAO工厂类获得DAO实现类实例
StudentDAO studentDAO = dentDAOInstance();
int recordCount=ordCount("");
//计算分页后的总数
pageCount=(recordCount%pageSize==0)?(recordCount/pageSize):(recordCount/pageSi
ze+1);
//获取用户想要显示的页数:
String integer=ameter("showPage");
if(integer==null){
integer="1";
}
try
{
showPage=nt(integer);
}
catch(NumberFormatException e){
showPage=1;
}
if(showPage<=1){
showPage=1;
}
if(showPage>=pageCount){
showPage=pageCount;
}
List
ribute("studentList",studentList);
//如果要显示第showPage页,那么游标应该移动到的position的值是:
int position=(showPage-1)*pageSize+1;
%>
计算机112班级通讯录
学生学号 | 学生姓名 | 学生年龄 | 学生电话 | 修改 | 删除 |
${ } | ${e } | ${} | ${ } | "?stunum= ${} " >修 改 | "?stunum= ${} " >删除 |
"" >添加同学 |
第<%=showPage %>页(共<%=pageCount %>页)
"?showPage= <%=showPage-1%> " >上一页
<% //根据pageCount的值显示每一页的数字并附加上相应的超链接
for(int i=1;i<=pageCount;i++){
%>
<% }
%>
"?showPage= <%=showPage+1%> " >下一页
删除代码
<%@page language=
"java"
pageEncoding=
"gb2312"
import=
""
%>
<%@page import=
"tDAO"
%>
<%@page import=
"tDAOImpl"
%>
<%@taglib prefix=
"c"
uri=
"/jsp/jstl/core"
%>
<%@taglib prefix=
"fmt"
uri=
"/jsp/jstl/fmt"
%>
<%@page import=
"tDAOFactory"
%>
<%@page import=
"t"
%>
DeleteStudent
<%
racterEncoding("gb2312"); //设置参数编码格式
String stunum=ameter("stunum");
StudentDAO studentDAO = dentDAOInstance();
Student(stunum);
%>
"" >
修改代码
1
、
修改窗口代码
<%@page language=
"java"
pageEncoding=
"gb2312"
%>
<%String stunum=ameter("stunum");
ribute("stuno", stunum);
%>
2
、修改代码
<%@page language=
"java"
pageEncoding=
"gb2312"
import=
""
%>
<%@page import=
"tDAO"
%>
<%@page import=
"tDAOImpl"
%>
<%@taglib prefix=
"c"
uri=
"/jsp/jstl/core"
%>
<%@taglib prefix=
"fmt"
uri=
"/jsp/jstl/fmt"
%>
<%@page import=
"tDAOFactory"
%>
<%@page import=
"t"
%>
updateStudent
<%
racterEncoding("gb2312"); //设置参数编码格式
Student student=new Student();
no(ameter("stuno"));
name(ameter("stuname"));
(ameter("stuage"));
tel(ameter("stutel"));
StudentDAO studentDAO = dentDAOInstance();
Student(student);
%>
"" >
添加代码
1
、
添加窗口代码
<%@page language=
"java"
pageEncoding=
"gb2312"
%>
2
、添加代码
<%@page language=
"java"
pageEncoding=
"gb2312"
import=
""
%>
<%@page import=
"tDAO"
%>
<%@page import=
"tDAOImpl"
%>
<%@taglib prefix=
"c"
uri=
"/jsp/jstl/core"
%>
<%@taglib prefix=
"fmt"
uri=
"/jsp/jstl/fmt"
%>
<%@page import=
"tDAOFactory"
%>
<%@page import=
"t"
%>
addStudent
<%
racterEncoding("gb2312"); //设置参数编码格式
Student student=new Student();
no(ameter("stuno"));
name(ameter("stuname"));
(ameter("stuage"));
tel(ameter("stutel"));
//通过DAO工厂类获得DAO实现类实例
StudentDAO studentDAO = dentDAOInstance();
dent(student);
%>
"" >
(3).java代码
1、Student类定义代码
package ;
public class Student {
private String stuno;
private String stuname;
private String age;
private String stutel;
}
public Student(){
stuno=null;
stuname=null;
age=null;
stutel=null;
}
public String getstuno() {
return stuno;
}
public void setstuno(String stuno) {
= stuno;
}
public String getstuname() {
return stuname;
}
public void setstuname(String stuname) {
e = stuname;
}
public String getage() {
return age;
}
public void setage(String age) {
= age;
}
public String getstutel() {
return stutel;
}
public void setstutel(String stutel) {
= stutel;
}
2、 DAO 接口代码
package ;
import ;
import t;
public interface StudentDAO {
public void addStudent(Student student);
public void updateStudent(Student student);
public void deleteStudent(String stuno);
public List
public List
str);
public int getRecordCount(String str);
public Student findStudentById(String stuno);
public boolean finduser(String user,String password);
}
3、 DAO 实现类代码
package ;
import tion;
import edStatement;
import Set;
import eption;
import ent;
import ist;
import ;
import t;
import ection;
public class StudentDAOImpl implements StudentDAO {
public void addStudent(Student student) {
Connection conn = nection();
String addSQL = "insert into student(stuno,stuname,age,stutel)
values(?,?,?,?)";
PreparedStatement pstmt = null;
try {
pstmt = eStatement(addSQL);
ing(1, no());
ing(2, name());
ing(3, ());
ing(4, tel());
eUpdate();
} catch (SQLException e) {
tackTrace();
} finally{
(pstmt);
(conn);
}
}
public void deleteStudent(String stuno) {
Connection conn = nection();
String updateSQL = "delete from student where stuno=?";
PreparedStatement pstmt = null;
try {
pstmt = eStatement(updateSQL);
ing(1, stuno);
eUpdate();
} catch (SQLException e) {
tackTrace();
} finally{
(pstmt);
(conn);
}
}
public List
Connection conn = nection();
String updateSQL = "select * from student";
PreparedStatement pstmt = null;
List
try {
pstmt = eStatement(updateSQL);
ResultSet rs = eQuery();
while(()) {
Student student = new Student();
no(ing(1));
name(ing(2));
(ing(3));
tel(ing(4));
(student);
}
} catch (SQLException e) {
tackTrace();
} finally{
(pstmt);
(conn);
}
return studentList;
}
public List
{
Connection conn = nection();
String updateSQL = "select * from student";
PreparedStatement pstmt = null;
List
int count=getRecordCount(str);
int n=pageSize;
try {
pstmt=eStatement(updateSQL);
ResultSet rs=eQuery();
if(count%pageSize!=0)
{
if((count/pageSize+1)==pageIndex)
n=count%pageSize;
}
te((pageIndex-1)*pageSize+1);
for(int i=1;i<=n;i++)
{
Student student = new Student();
no(ing(1));
name(ing(2));
(ing(3));
tel(ing(4));
(student);
();
}
} catch (SQLException e) {
tackTrace();
} finally{
(conn);
}
return studentList;
}
public void updateStudent(Student student) {
Connection conn = nection();
String updateSQL = "update student set stuname=?," +
"age=?,stutel=? where stuno=?";
PreparedStatement pstmt = null;
try {
pstmt = eStatement(updateSQL);
ing(1, name());
ing(2, ());
ing(3, tel());
ing(4, no());
eUpdate();
} catch (SQLException e) {
tackTrace();
} finally{
(pstmt);
(conn);
}
}
public Student findStudentById(String stuno) {
Connection conn = nection();
String updateSQL = "select * from student where stuno = ?";
PreparedStatement pstmt = null;
Student student = new Student();
try {
pstmt = eStatement(updateSQL);
ing(1, stuno);
ResultSet rs = eQuery();
if(()) {
no(ing(1));
name(ing(2));
(ing(3));
tel(ing(4));
}
} catch (SQLException e) {
tackTrace();
} finally{
(pstmt);
(conn);
}
return student;
}
public int getRecordCount(String str) {
Connection conn = nection();
String updateSQL = "select count(*) from student"+str;
PreparedStatement pstmt = null;
int count=0;
try{
pstmt = eStatement(updateSQL);
ResultSet rs = eQuery();
();
count=(1);
} catch (SQLException e) {
tackTrace();
} finally{
(pstmt);
(conn);
}
return count;
}
public boolean finduser(String user,String password)
{
Connection conn = nection();
String updateSQL = "select * from user where user = ? and password=?";
PreparedStatement pstmt = null;
boolean flag=false;
try {
pstmt = eStatement(updateSQL);
ing(1, user);
ing(2, password);
ResultSet rs = eQuery();
if(()) {
flag=true;
}
} catch (SQLException e) {
tackTrace();
} finally{
(pstmt);
(conn);
}
return flag;
}
}
4、 DAO工厂类代码
package y;
import tDAO;
import tDAOImpl;
public class StudentDAOFactory {
public static StudentDAO getStudentDAOInstance(){
return new StudentDAOImpl();
}
}
5、 数据库连接代码
package ;
import tion;
import Manager;
import edStatement;
import Set;
import eption;
public class DBConnection {
private static final String DBDRIVER = "" ;
private static final String DBURL = "jdbc:mysql://localhost:3306/test";
private static final String DBUSER = "root" ;
private static final String DBPASSWORD = "ddssqq";
public static Connection getConnection(){
Connection conn = null;
try {
e(DBDRIVER);
conn = nection(DBURL,DBUSER,DBPASSWORD);
} catch (ClassNotFoundException e) {
tackTrace();
} catch (SQLException e) {
tackTrace();
}
return conn;
}
public static void close(Connection conn) {
if(conn != null) {
try {
();
} catch (SQLException e) {
tackTrace();
}
}
}
public static void close(PreparedStatement pstmt) {
if(pstmt != null) {
try {
();
} catch (SQLException e) {
tackTrace();
}
}
}
public static void close(ResultSet rs) {
if(rs != null) {
try {
();
} catch (SQLException e) {
tackTrace();
}
}
}
}
四、实验截图
(1)登录界面图
(2)成功登录后分页显示图
(3)删除操作后分页显示图
如:删除学生学号为2的学生
(4)修改操作图
(5)添加操作图
原始通讯录页表
添加页
添加后页表
验证同一个学号的同学能否重复录入
继续添加,如:添加一个学号为1的同学的信息
点击添加后,通讯录里的信息没变化
故,同一个学号的同学不能重复录入
五、实验总结
本次实验,给我感受很深的是我很好的巩固了前面所学的基础
知识,加深了我对它们的理解,最重要的一点是,我通过此次实验,
编程能力有了一定的提高。自己去做,会遇到很多意想不到的问题,
虽然有些是小问题,但随着它们的解决,还是感觉收获不小。比如:
实现修改操作时,因为要实现学号不允许修改,我想到了把学号传递
到修改文本框,并且用了readonly方法,此方法标记为只读,一删
除学生学号,就会跳回通讯录分页页表,改也改不了。此外,我还了
解并试了disabled方法,此方法不能改写与提交,所以不行;还有
就是数据库建表,连接也出现过问题,通过咨询同学与自己学习,最
终还是解决了它们。
总之,本次实验很好的达到了实验要求。通过本次实验,我不
但掌握了JSP的基本语法和JSP程序的基本处理流程,进一步理解熟
悉了JSP主要内置对象的用法,如:request,response,session
等,还掌握了EL和JSTL的使用,JDBC编程,理解了JavaBean和
Servlet的含义,以及MVC编程方式。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1712628667a2092724.html
评论列表(0条)