天津理工大学J2EE实验一实验报告1.doc
《天津理工大学J2EE实验一实验报告1.doc》由会员分享,可在线阅读,更多相关《天津理工大学J2EE实验一实验报告1.doc(7页珍藏版)》请在冰点文库上搜索。
计算机科学与工程系
天津理工大学
计算机科学与工程学院
实验报告
2017至2018学年第2学期
课程名称
J2EE程序设计
学号
学生姓名
年级
2015级
专业
计算机科学与技术
教学班号
实验地点
7-212
实验时间
2018年5月31日第7节至第8节
2018年6月1日第7节至第8节
主讲教师
董玉涛
辅导教师
董玉涛
实验
(一)
实验名称
用户登录处理Web程序
软件环境
STS、MySQL、Maven
硬件环境
PC机
实验目的
1、熟悉使用servlet、jsp;
2、实现Web程序与数据库的连接
实验内容(应包括实验题目、实验要求、实验任务等)
制作一个简单的用户登录处理Web程序。
在登录页面中输入正确的用户名、密码、确认密码则可以正常登录,并自动跳转到欢迎页面,并且在欢迎页面中显示当前所有已经登录的用户名列表。
数据库中用户名唯一。
登录错误则自动跳转回到登录页面,并在登录页面中提示"登录错误"。
数据库字段及内容自行设计,页面显示方式自行设计。
提交内容为Maven工程、数据库脚本文件(logindb.sql)以及针对本程序的使用说明简述(readme.txt)。
实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)
一、实验过程及源代码
1、Login.jsp
<%@pagelanguage="java"pageEncoding="UTF-8"%>
DOCTYPEHTML>
用户登陆
用户名:
密码:
2、LoginCheck.jsp
<%@pagelanguage="java"contentType="text/html;charset=utf-8"
pageEncoding="UTF-8"%>
<%@pageimport="java.sql.*,login.QueryBean,java.util.HashSet,java.util.Set"%>
useBeanid="querybean"scope="request"class="login.QueryBean"/>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
<%!
privatestaticStringurl="jdbc:
mysql:
//127.0.0.1:
3306/logindb?
serverTimezone=UTC&useSSL=false";
privatestaticStringusername="root";
privatestaticStringpassword="123456";%>
<%!
@SuppressWarnings("unchecked")%>
<%
ResultSetrs=null;
booleanflag=false;
%>
<%
try{
querybean.setConnection("com.mysql.cj.jdbc.Driver",url,username,password);
querybean.setQuerystatement("SELECTusernameFROMuserWHEREusername=?
ANDpassword=?
");
String[]param={request.getParameter("username"),request.getParameter("password")};
querybean.setParam(param);
rs=querybean.getResult();
if(rs.next()){
flag=true;
}
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
rs.close();
}catch(Exceptione){
e.printStackTrace();
}
}
%>
<%
if(flag){
Stringname=request.getParameter("username");
session.setMaxInactiveInterval(60);
SetonlineUserSet=newHashSet();
onlineUserSet=(Set)application.getAttribute("onlineUserSet");
onlineUserSet.add(name);
application.setAttribute("onlineUserSet",onlineUserSet);
session.setAttribute("username",name);
%>
forwardpage="list.jsp"/>
<%
}else{
request.getSession().setAttribute("mrgss","用户名或密码错误");
request.getSession().setAttribute("flag","1");
response.sendRedirect("index.jsp");
}
%>
3、JavaBean
importjava.sql.*;
publicclassQueryBean{
publicStringquery_statement;/*定义sql语句*/
publicStringparam[];/*查询条件,或者是新的记录*/
publicResultSetresult=null;
publicConnectionconn;
publicvoidsetParam(String[]param){
this.param=param;
}
publicvoidsetQuerystatement(Stringquery_statement){
this.query_statement=query_statement;
}
publicvoidsetConnection(StringdriverName,StringjdbcURL,Stringusername,Stringpasswd)throwsException{
Connectionconn1;
Class.forName(driverName);
conn1=DriverManager.getConnection(jdbcURL,username,passwd);
conn1.setAutoCommit(false);
this.conn=conn1;
}
publicResultSetgetResult(){
try{
PreparedStatementselect_stm=conn.prepareStatement(query_statement,
java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
if(param!
=null)
for(inti=0;i select_stm.setString(i+1,param[i]);
result=select_stm.executeQuery();
}catch(Exceptione){
System.out.println(e);
}
returnresult;
}
publicvoidinsertRecord()throwsSQLException,java.io.UnsupportedEncodingException{
try{
PreparedStatementinsert_stm=conn.prepareStatement(query_statement);
if(param!
=null)
for(inti=0;i insert_stm.setString(i+1,param[i]);
insert_stm.executeUpdate();
insert_stm.close();
mit();
}catch(Exceptione){
System.out.println(e);
conn.rollback();
}
}
publicvoidupdateRecord()throwsSQLException,java.io.UnsupportedEncodingException{
try{
PreparedStatementupdate_stm=conn.prepareStatement(query_statement);
if(param!
=null)
for(inti=0;i update_stm.setString(i+1,param[i]);
update_stm.executeUpdate();
update_stm.close();
mit();
}catch(Exceptione){
System.out.println(e);
conn.rollback();
}
}
publicvoiddeleteRecord()throwsSQLException,java.io.UnsupportedEncodingException{
try{
PreparedStatementdelete_stm=conn.prepareStatement(query_statement);
if(param!
=null)
for(inti=0;i delete_stm.setString(i+1,param[i]);
delete_stm.executeUpdate();
delete_stm.close();
mit();
}catch(Exceptione){
System.out.println(e);
conn.rollback();
}
}
}
4、Listener
importjava.util.HashSet;
importjava.util.Set;
importjavax.servlet.ServletContext;
importjavax.servlet.ServletContextEvent;
importjavax.servlet.ServletContextListener;
importjavax.servlet.http.HttpSession;
importjavax.servlet.http.HttpSessionEvent;
importjavax.servlet.http.HttpSessionListener;
publicclassLoginListenerimplementsHttpSessionListener,ServletContextListener{
privateServletContextapplication=null;
publicvoidcontextDestroyed(ServletContextEventsce){
System.out.println("contextdestory");
}
publicvoidcontextInitialized(ServletContextEventsce){
System.out.println("contextinit");
application=sce.getServletContext();
SetonlineUserSet=newHashSet();
application.setAttribute("onlineUserSet",onlineUserSet);
}
publicvoidsessionCreated(HttpSessionEventse){
System.out.println("sessioncreate");
}
@SuppressWarnings("unchecked")
publicvoidsessionDestroyed(HttpSessionEventse){
HttpSessionsession=se.getSession();
SetonlineUserSet=(Set)application.getAttribute("onlineUserSet");
Stringusername=(String)session.getAttribute("username");
onlineUserSet.remove(username);
application.setAttribute("onlineUserSet",onlineUserSet);
onlineUserSet=(Set)application.getAttribute("onlineUserSet");
System.out.println(onlineUserSet.toString());
System.out.println(username+"超时退出");
System.out.println("sessiondestory");
}
}
二、实验效果图
7