javaee试验二 Servlet程序设计.docx
- 文档编号:30382017
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:23
- 大小:833.50KB
javaee试验二 Servlet程序设计.docx
《javaee试验二 Servlet程序设计.docx》由会员分享,可在线阅读,更多相关《javaee试验二 Servlet程序设计.docx(23页珍藏版)》请在冰豆网上搜索。
javaee试验二Servlet程序设计
昆明理工大学信息工程与自动化学院学生实验报告
(2012—2013学年第一学期)
课程名称:
JAVAEE技术开课实验室:
信自楼4442012年11月12日
年级、专业、班
计科10级
学号
姓名
成绩
实验项目名称
实验二Servlet程序设计
指导教师
教师评语
教师签名:
年月日
一、实验目的
通过上机,熟练掌握servlet编程、过滤器、监听器的编程。
二、内容及要求
1、上机内容:
●编写index.jsp,里面包含注册、显示数据清单、写入图片、显示图片的连接。
●当用户选择注册时,首先进行客户端ip地址是否是黑名单的检测,如果不是则转到注册页面;
●在显示所有的数据清单的页面中增加一个链接,仿照例题编写输出为EXCEL的servlet,点击时链接时执行它。
●实现给数据表中的photo列写入图片,图片文件直接放在服务器上。
●实现按输入的编号显示对应的图片。
●实现登录,在登录界面中生成验证码(验证码不出现数字4)。
●登录成功则转到main.jsp,显示网站的在线用户人数、当前用户、点击率、在线用户列表。
●通过过滤器实现登录过滤检查,不允许用户直接请求main等其他页面;通过=过滤器给所有的页面底部加上“昆明理工大学计算机系”+班级+学号+姓名
●用监听器实现实现网站所有网页的访问次数累计,在线用户数统计、在现用户列表更新。
三、步骤及具体实施
1、简要描述程序的开发流程、文件部署截图、及各种配置;
1.新建一个Web工程
当我们有一个现成的Web工程时我们可以通过import导入一个工程。
File->import->general->exitingprojectsintoworkspace;之后找到要导入工程的路径确定即可
2.编写一个用户注册的servlet程序;
(1)在数据库创建一个userinfor1的数据库;
(2)编写一个用户登录的jsp注册界面;
(3)把登录帐号、登录密码、用户姓名、家庭住址、照片、性别、个人简介信息存入数据库好;
3.编写一个用户登录的servlet程序;
(1)编写一个用户登录的jsp登录界面;
(2)编写一个用户登录的servlet程序使它能够从表单中提取用户登录的相关信息并到数据库中进行查找。
(3)登录成功后跳转到登录成功界面;
4.编写一个用户登录时生成验证码的程序;
5.当用户登录成功后我们新建一个会话对象,会话对象保存用户的验证码和用户名,当用户登录、查看或修改时可以从会话中直接获取相关信息。
6.新建一个ServletContext对象
(1)通过ServletContext对象访问外部资源
(2)当用户进行跳转时取得转发对象
7.编写一个过滤器程序,当用户登录时过滤掉黑用户或是黑IP;
2、程序代码
登陆:
packagejavaee.ch04;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.util.ArrayList;
importjava.util.List;
importjavax.servlet.RequestDispatcher;
importjavax.servlet.ServletConfig;
importjavax.servlet.ServletContext;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
//登录处理Servlet
publicclassLoginActionextendsHttpServlet
{
StringdriverName=null;
Stringurl=null;
//初始化方法
publicvoidinit(ServletConfigconfig)throwsServletException
{
super.init(config);
//取得Servlet配置的数据库初始参数
driverName=config.getInitParameter(driverName);
url=config.getInitParameter(url);
}
//GET请求处理方法
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException
{
//取得登录表单提交的数据
Stringuserid=request.getParameter("userid");
Stringpassword=request.getParameter("password");
StringcheckCode=request.getParameter("checkcode");
//如果帐号为空,返回到登录页面
if(userid==null||userid.trim().length()==0)
{
response.sendRedirect("login.jsp");
return;
}
//如果密码为空,返回到登录页面
if(password==null||password.trim().length()==0)
{
response.sendRedirect("login.jsp");
return;
}
//如果验证码为空,返回到登录页面
if(checkCode==null||checkCode.trim().length()==0)
{
response.sendRedirect("login.jsp");
return;
}
//取得会话对象
HttpSessionsession=request.getSession();
//取得会话对象中保存的验证码,由验证码生成Servlet存入
StringcheckCodeInSession=(String)session.getAttribute("validate_code");
//如果验证码不符,直接跳转到登录页面
if(!
checkCode.equalsIgnoreCase(checkCodeInSession))
{
response.sendRedirect("login.jsp");
return;
}
else
{
//连接数据库,进行帐号和密码验证
Stringsql="select*fromuserinfo1whereUSERID=?
andPASSWORD=?
";
Connectioncn=null;
booleancheck=false;
try
{
Class.forName("com.mysql.jdbc.Driver");
cn=DriverManager.getConnection("jdbc:
mysql:
//localhost/cityoa","root","abc123");
//Class.forName(driverName);
//cn=DriverManager.getConnection(url);
PreparedStatementps=cn.prepareStatement(sql);
ps.setString(1,userid);
ps.setString(2,password);
ResultSetrs=ps.executeQuery();
if(rs.next())
{
check=true;
}
rs.close();
ps.close();
}
catch(Exceptione)
{
response.sendRedirect("login.jsp");
}
finally
{
try{cn.close();}catch(Exceptione){}
}
if(check)
{
//如果用户验证合法
//将会话对象保存到会话对象
try{
session.setAttribute("userid",userid);
//跳转到系统主页
response.sendRedirect("main.jsp");
//request.setAttribute("userid",userid);
//RequestDispatcherrd1=request.getRequestDispatcher("Xuigaimm");
//rd1.forward(request,response);
}catch(Exceptione)
{
System.out.println("发送userid出错;"+e);
}
}
else
{
response.sendRedirect("login.jsp");
}
}
}
//POST请求处理方法
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException
{
doGet(request,response);
}
//销毁方法
publicvoiddestroy()
{
super.destroy();
}
}
注册:
packagejavaee.ch04;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.sql.*;
importjavax.servlet.ServletConfig;
importjavax.servlet.ServletContext;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importcom.jspsmart.upload.SmartUpload;
importcom.jspsmart.upload.SmartUploadException;
//用户注册处理Servlet
publicclassRegisterProcessActionextendsHttpServlet
{
//定义数据库连接对象
privateConnectioncn=null;
privateStringdriverName=null;//数据库驱动器
privateStringurl=null;//数据库地址URL
privateStringuser=null;
privateStringpassword=null;
//初始化方法,取得数据库连接对象
publicvoidinit(ServletConfigconfig)throwsServletException
{
super.init(config);
driverName=config.getInitParameter("driverName");
url=config.getInitParameter("url");
user=config.getInitParameter("user");
password=config.getInitParameter("password");
try
{
Class.forName(driverName);
cn=DriverManager.getConnection(url,user,password);
}
catch(Exceptione)
{
System.out.println("取得数据库连接错误:
"+e.getMessage());
}
}
//处理GET请求方法
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException
{
com.jspsmart.upload.SmartUploadsu=newcom.jspsmart.upload.SmartUpload();//新建一个SmartUpload对象
try{
su.initialize(this.getServletConfig(),request,response);
su.setDeniedFilesList("exe,bat");//设定禁止上传的文件的类型,禁止上传带有exe,bat文件
su.upload();
intcount=su.save("/");//保存文件放在根目录的upload文件夹下
}catch(Exceptione)
{//异常处理
//打印自定义异常信息
System.out.println("Unanabletouploadthefile.
");
System.out.println("PleaseCheckTheFileType"+e.getMessage());
}
//取得用户注册表单提交的数据
Stringuserid=su.getRequest().getParameter("userid");
Stringpassword=su.getRequest().getParameter("password");
Stringrepassword=su.getRequest().getParameter("repassword");
Stringusername=su.getRequest().getParameter("name");
Stringaddress=su.getRequest().getParameter("address");
Stringsex=su.getRequest().getParameter("sex");
Stringtextarea=su.getRequest().getParameter("textarea");
//判断登录帐号为空,则自动跳转到注册页面
if(userid==null||userid.trim().length()==0)
{
response.sendRedirect("register.jsp");
}
//如果登录密码为空,自动跳转到注册页面
if(password==null||password.trim().length()==0)
{
response.sendRedirect("register.jsp");
}
//如果确认登录密码为空,自动跳转到注册页面
if(repassword==null||repassword.trim().length()==0)
{
response.sendRedirect("register.jsp");
}
//如果密码和确认密码不符,自动跳转到注册页面
if(!
password.equals(repassword))
{
response.sendRedirect("register.jsp");
}
//将姓名进行汉字乱码处理
if(username!
=null&&username.trim().length()>0)
{
username=newString(username.getBytes("GBK"));
}
//增加新用户处理
ServletContextctx=this.getServletContext();
com.jspsmart.upload.Filefile=su.getFiles().getFile(0);
if(!
file.isMissing())
{
Stringmyfile=file.getFileName();
System.out.println("取得FilePathName:
"+file.getFilePathName());
//try{
//file.saveAs("E:
/文件/JAVAEE/04/"+myfile,su.SAVE_PHYSICAL);
//}catch(SmartUploadExceptione1){
//System.out.println("取得FilePathName错误:
"+e1);
//e1.printStackTrace();
//}
Stringrealpath=ctx.getRealPath("/"+file.getFileName());
System.out.println("取得realpath:
"+realpath);
Filename=newFile(realpath);
FileInputStreamfilename=newFileInputStream(name);
Stringsql="insertintouserinfo1(USERID,PASSWORD,NAME,SEX,ADDRESS,PHOTO,TEXT,PATH)values(?
?
?
?
?
?
?
?
)";
try
{
PreparedStatementps=cn.prepareStatement(sql);
ps.setString(1,userid);
ps.setString(2,password);
ps.setString(3,username);
ps.setString(4,sex);
ps.setString(5,address);
ps.setBinaryStream(6,filename,(int)name.length());
ps.setString(7,textarea);
ps.setString(8,realpath);
ps.executeUpdate();
ps.close();
//处理结束后,跳转到注册成功提示页面
HttpSessionsession=request.getSession();
session.setAttribute("userid",userid);
response.sendRedirect("success.jsp");
}
catch(Exceptione)
{
System.out.println("错误:
"+e.getMessage());
response.sendRedirect("register.jsp");
}
}
}
//处理POST请求方法
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException
{
doGet(request,response);
}
//销毁方法
publicvoiddestroy()
{
super.destroy();
try
{
cn.close();
}
catch(Exceptione)
{
System.out.println("关闭数据库错误:
"+e.getMessage());
}
}
}
验证码:
packagejavaee.ch04;
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.su
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- javaee 试验二 Servlet程序设计 试验 Servlet 程序设计