Servlet程序设计.docx

上传人:b****1 文档编号:14554878 上传时间:2023-06-24 格式:DOCX 页数:46 大小:245.60KB
下载 相关 举报
Servlet程序设计.docx_第1页
第1页 / 共46页
Servlet程序设计.docx_第2页
第2页 / 共46页
Servlet程序设计.docx_第3页
第3页 / 共46页
Servlet程序设计.docx_第4页
第4页 / 共46页
Servlet程序设计.docx_第5页
第5页 / 共46页
Servlet程序设计.docx_第6页
第6页 / 共46页
Servlet程序设计.docx_第7页
第7页 / 共46页
Servlet程序设计.docx_第8页
第8页 / 共46页
Servlet程序设计.docx_第9页
第9页 / 共46页
Servlet程序设计.docx_第10页
第10页 / 共46页
Servlet程序设计.docx_第11页
第11页 / 共46页
Servlet程序设计.docx_第12页
第12页 / 共46页
Servlet程序设计.docx_第13页
第13页 / 共46页
Servlet程序设计.docx_第14页
第14页 / 共46页
Servlet程序设计.docx_第15页
第15页 / 共46页
Servlet程序设计.docx_第16页
第16页 / 共46页
Servlet程序设计.docx_第17页
第17页 / 共46页
Servlet程序设计.docx_第18页
第18页 / 共46页
Servlet程序设计.docx_第19页
第19页 / 共46页
Servlet程序设计.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Servlet程序设计.docx

《Servlet程序设计.docx》由会员分享,可在线阅读,更多相关《Servlet程序设计.docx(46页珍藏版)》请在冰点文库上搜索。

Servlet程序设计.docx

Servlet程序设计

*********大学信息工程与自动化学院学生实验报告

(2012—2013学年第一学期)

课程名称:

JAVAEE技术开课实验室:

信自楼4442012年11月29日

年级、专业、班

学号

姓名

成绩

实验项目名称

实验二Servlet程序设计

指导教师

教师评语

 

教师签名:

年月日

一、实验目的

通过上机,熟练掌握servlet编程、过滤器、监听器的编程。

二、内容及要求

1、上机内容:

●编写index.jsp,里面包含注册、显示数据清单、写入图片、显示图片的连接。

●当用户选择注册时,首先进行客户端ip地址是否是黑名单的检测,如果不是则转到注册页面;

●在显示所有的数据清单的页面中增加一个链接,仿照例题编写输出为EXCEL的servlet,点击时链接时执行它。

●实现给数据表中的photo列写入图片,图片文件直接放在服务器上。

●实现按输入的编号显示对应的图片。

●实现登录,在登录界面中生成验证码(验证码不出现数字4)。

●登录成功则转到main.jsp,显示网站的在线用户人数、当前用户、点击率、在线用户列表。

●通过过滤器实现登录过滤检查,不允许用户直接请求main等其他页面;通过=过滤器给所有的页面底部加上“昆明理工大学计算机系”+班级+学号+姓名

●用监听器实现网站所有网页的访问次数累计,在线用户数统计、在现用户列表更新。

三、步骤及具体实施

1、简要描述程序的开发流程、文件部署截图、及各种配置:

这一程序是相当于学校后台管理的内容,当一个管理者登录她的信息后,可以在整个系统里面增加学生信息,如学号、姓名、出生日期、照片、个人介绍等,也可以查看某一学生的全部信息等。

开发项目的文件部署如下:

1.创建一新项目为:

Learning所有的文件如下图:

2.在Learning中每个serlvet、jsp和页面的功能如下:

check.java是当管理者点查看学生信息时,用来显示学生信息的,即用来定义输出格式的。

CheckCodeGet.java是用来生成验证码的。

checkphoto.java当管理者查看学生信息时,用来检验学生图片。

LoginAction.java用来验证当用户登录时,输入的用户名和密码。

zhuce.java用来取得用户输入的信息,并插入到数据库中的servlet。

login.jsp:

可以让用户输入登录的信息。

retire.jsp:

可以让用户选择退出。

search.jsp:

让管理都选择查看某一学生的信息。

STUMAN.jsp:

管理都登录成功后,可以选择的操作。

success.jsp:

注册成功后,可选择的操作。

zhuce.jsp:

可以让用户注册学生信息的页面。

3.除以上外,本次项目离不开数据库,本次项目用SQLserver2008来存储和管理用户所有的信息。

建三个表students和EMP。

创建好的数据库如下图:

用户EMP表如下:

学生注册表students如下:

2、程序代码

1.check.java:

packagezonghe;

importjava.io.IOException;

importjava.io.PrintWriter;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

//importcom.jspsmart.upload.SmartUpload;

@SuppressWarnings("serial")

publicclasscheckextendsHttpServlet

{

privateConnectioncn=null;

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

Stringstuid=request.getParameter("stuid");

System.out.println(stuid);

Stringsql="select*fromSTUDENTSwherestuid=?

";

response.setContentType("text/html");

response.setCharacterEncoding("GBK");

PrintWriterout=response.getWriter();

out.println("");

out.println("学生信息");

out.println("");

try

{

PreparedStatementps=cn.prepareStatement(sql);

ps.setString(1,stuid);

ResultSetrs=ps.executeQuery();

out.println("

");

out.println("

学生信息列表

");

out.println(""+"返回首页"+""+"      "+"退出"+""+"      "+"继续查看"+"");

out.println("");

out.println("");

out.println("姓名性别学号出生日期地址简介照片");

out.println("");

while(rs.next())

{

out.print("");

out.println(""+rs.getString("name")+"");

out.println(""+rs.getString("sex")+"");

out.println(""+rs.getString("stuid")+"");

out.println(""+rs.getString("date")+"");

out.println(""+rs.getString("address")+"");

out.println(""+rs.getString("introduce")+"");

request.getSession().setAttribute("stuid",stuid);

//out.println("

//localhost:

8080/zonghe/images'>");

//out.println(""+rs.getString("images")+"");

//out.println(mySmartUpload.getRequest().getParameter("photo")+" ");

out.println("");

out.print("");

}

rs.close();

ps.close();

out.println("");

out.println("

");

}

catch(Exceptione)

{

System.out.println("遍历记录错误:

"+e.getMessage());

}

out.println("");

out.println("");

out.flush();

out.close();

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

doGet(request,response);

}

publicvoidinit()throwsServletException{

try

{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");cn=DriverManager.getConnection("jdbc:

sqlserver:

//localhost:

1433;DatabaseName=cityoa","sa","123456");

}

catch(Exceptione)

{

System.out.println("取得数据库连接错误:

"+e.getMessage());

}

}

publicvoiddestroy()

{

super.destroy();

try

{

cn.close();

}

catch(Exceptione)

{

System.out.println("关闭数据库连接错误:

"+e.getMessage());

}

}

}

2.CheckCodeGet.java:

packagezonghe;

importjava.io.IOException;

//importjava.io.PrintWriter;

importjava.awt.*;

importjava.awt.image.*;

importjava.util.*;

//importjavax.imageio.*;

importjavax.servlet.ServletConfig;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importcom.sun.image.codec.jpeg.JPEGCodec;

importcom.sun.image.codec.jpeg.JPEGImageEncoder;

//生成验证码

publicclassCheckCodeGetextendsHttpServlet

{

privatestaticfinallongserialVersionUID=1L;

privatefinalintTYPE_NUMBER=0;

privatefinalintTYPE_LETTER=1;

privatefinalintTYPE_MULTIPLE=2;

privateintwidth;

privateintheight;

privateintcount;

//private

inttype;

privateStringvalidate_code;

privateRandomrandom;

privateFontfont;

privateintline;

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException

{

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires",0);

response.setContentType("image/jpeg");

StringreqCount=request.getParameter("count");

StringreqWidth=request.getParameter("width");

StringreqHeight=request.getParameter("height");

StringreqType=request.getParameter("type");

if(reqCount!

=null&&reqCount!

="")this.count=Integer.parseInt(reqCount);

if(reqWidth!

=null&&reqWidth!

="")this.width=Integer.parseInt(reqWidth);

if(reqHeight!

=null&&reqHeight!

="")this.height=Integer.parseInt(reqHeight);

if(reqType!

=null&&reqType!

="")this.type=Integer.parseInt(reqType);

font=newFont("CourierNew",Font.BOLD,width/count);

BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

Graphicsg=image.getGraphics();

g.setColor(getRandColor(200,250));

g.fillRect(0,0,width,height);

g.setColor(getRandColor(160,200));

for(inti=0;i

{

intx=random.nextInt(width);

inty=random.nextInt(height);

intxl=random.nextInt(12);

intyl=random.nextInt(12);

g.drawLine(x,y,x+xl,y+yl);

}

g.setFont(font);

validate_code=getValidateCode(count,1);

request.getSession().setAttribute("validate_code",validate_code);

for(inti=0;i

{

//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成

g.setColor(newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));

intx=(int)(width/count)*i;

inty=(int)((height+font.getSize())/2)-5;

g.drawString(String.valueOf(validate_code.charAt(i)),x,y);

}

g.dispose();

//ImageIO.write(image,"JPEG",response.getOutputStream());

JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(response.getOutputStream());

encoder.encode(image);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException

{

doGet(request,response);

}

publicvoidinit(ServletConfigconfig)throwsServletException

{

super.init(config);

width=150;

height=50;

count=4;

type=TYPE_NUMBER;

random=newRandom();

line=200;

}

//

privateColorgetRandColor(intfrom,intto)

{

Randomrandom=newRandom();

if(to>255)from=255;

if(to>255)to=255;

intrang=Math.abs(to-from);

intr=from+random.nextInt(rang);

intg=from+random.nextInt(rang);

intb=from+random.nextInt(rang);

returnnewColor(r,g,b);

}

//取得验证码字符串

privateStringgetValidateCode(intsize,inttype)

{

StringBuffervalidate_code=newStringBuffer();

for(inti=0;i

{

validate_code.append(getOneChar(type));

}

returnvalidate_code.toString();

}

//根据验证码类型取得实际验证字符

privateStringgetOneChar(inttype)

{

Stringresult=null;

switch(type)

{

caseTYPE_NUMBER:

result=String.valueOf(random.nextInt(10));

break;

caseTYPE_LETTER:

result=String.valueOf((char)(random.nextInt(26)+65));

break;

caseTYPE_MULTIPLE:

if(random.nextBoolean())

{

result=String.valueOf(random.nextInt(10));

}

else

{

result=String.valueOf((char)(random.nextInt(26)+65));

}

break;

default:

result=null;

break;

}

if(result==null)

{

thrownewNullPointerException("获取验证码出错");

}

returnresult;

}

}

3.checkphoto.java:

packagezonghe;

importjava.io.IOException;

//importjava.io.InputStream;

//importjava.io.OutputStream;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.io.PrintWriter;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

//importjavax.servlet.http.HttpSession;

@SuppressWarnings("serial")

publicclasscheckphotoextendsHttpServlet

{

privateConnectioncn=null;

//初始化方法

publicvoidinit()throwsServletException

{

try

{

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

cn=DriverManager.getConnection("jdbc:

sqlserver:

//localhost:

1433;DatabaseName=cityoa","sa","123456");

}

catch(Exceptione)

{

System.out.println("取得数据库连接错误:

"+e.getMessage());

}

}

//GET处理

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException

{

//Ht

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2