JSP编程-班级通讯录

JSP编程-班级通讯录


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"

%>

通讯录登录

""

method=

"post"

>

查看班级通讯录登录

"2"

>

"red"

>${}

用户名

"text"

name=

"username"

/>

密码

"password"

name=

"upassword"

/>

"submit"

value=

"登录"

>

"reset"

value=

"重置"

/>

<%@ 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"

%>

</p><p style="text-indent: 2em;font-size:18px;"> 计算机112班级通讯录 </p><p style="text-indent: 2em;font-size:18px;">

<%! 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 studentList = udentByPage(showPage,pageSize,"");

ribute("studentList",studentList);

//如果要显示第showPage页,那么游标应该移动到的position的值是:

int position=(showPage-1)*pageSize+1;

%>

计算机112班级通讯录

"700"

border=

"1"

>

"student"

items=

"

${tList}

"

><%-- 循环输

出学生信息 --%>

学生学号 学生姓名 学生年龄 学生电话 修改 删除
${ } ${e } ${} ${ }

"?stunum=

${}

"

>修

"?stunum=

${}

"

>删除

""

>添加同学

第<%=showPage %>页(共<%=pageCount %>页)

"?showPage=1"

>首页

"?showPage=

<%=showPage-1%>

"

>上一页

<% //根据pageCount的值显示每一页的数字并附加上相应的超链接

for(int i=1;i<=pageCount;i++){

%>

"?showPage=

<%=i%>

"

><%=i%>

<% }

%>

"?showPage=

<%=showPage+1%>

"

>下一页

"?showPage=

<%=pageCount%>

"

>末页

""

method=

"get"

>

跳转到第

"text"

name=

"showPage"

size=

"4"

>页

"submit"

name=

"submit"

value=

"跳转"

>

删除代码

<%@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"

%>

</p><p style="text-indent: 2em;font-size:18px;"> DeleteStudent </p><p style="text-indent: 2em;font-size:18px;">

<%

racterEncoding("gb2312"); //设置参数编码格式

String stunum=ameter("stunum");

StudentDAO studentDAO = dentDAOInstance();

Student(stunum);

%>

""

>

修改代码

1

修改窗口代码

<%@page language=

"java"

pageEncoding=

"gb2312"

%>

修改学生信息

<%String stunum=ameter("stunum");

ribute("stuno", stunum);

%>

""

method=

"post"

>

修改学生信息

学生学号:

"text"

name=

"stuno"

value="${}" readonly />

学生姓名:

"text"

name=

"stuname"

/>

学生年龄:

"text"

name=

"stuage"

/>

学生电话:

"text"

name=

"stutel"

/>

"submit"

value=

"修改"

>

"reset"

value=

"重置"

>

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"

%>

</p><p style="text-indent: 2em;font-size:18px;"> updateStudent </p><p style="text-indent: 2em;font-size:18px;">

<%

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"

%>

添加学生信息

""

method=

"post"

>

添加学生信息

学生学号:

"text"

name=

"stuno"

/>

学生姓名:

"text"

name=

"stuname"

/>

学生年龄:

"text"

name=

"stuage"

/>

学生电话:

"text"

name=

"stutel"

/>

"submit"

value=

"添加"

>

"reset"

value=

"重置"

>

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"

%>

</p><p style="text-indent: 2em;font-size:18px;"> addStudent </p><p style="text-indent: 2em;font-size:18px;">

<%

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 findAllStudent();

public List findStudentByPage(int pageIndex,int pageSize,String

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 findAllStudent() {

Connection conn = nection();

String updateSQL = "select * from student";

PreparedStatement pstmt = null;

List studentList = new ArrayList();

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 findStudentByPage(int pageIndex,int pageSize,String str)

{

Connection conn = nection();

String updateSQL = "select * from student";

PreparedStatement pstmt = null;

List studentList = new ArrayList();

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信