Servlet程序设计.docx
- 文档编号:14554878
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:46
- 大小:245.60KB
Servlet程序设计.docx
《Servlet程序设计.docx》由会员分享,可在线阅读,更多相关《Servlet程序设计.docx(46页珍藏版)》请在冰点文库上搜索。
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("
out.println("
out.println("
out.println("
out.println("
out.println("
request.getSession().setAttribute("stuid",stuid);
//out.println("
//localhost:
8080/zonghe/images'>
//out.println("
//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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Servlet 程序设计