java2ee实验七.docx
《java2ee实验七.docx》由会员分享,可在线阅读,更多相关《java2ee实验七.docx(18页珍藏版)》请在冰豆网上搜索。
java2ee实验七
盐城师范学院信息科学与技术学院
实验报告
课程名称J2EE企业级应用开发实例教程2009-2010学年第二学期
班级
0919
学号
09418934
姓名
陆海雷
实验地点
平西
实验日期
2012.3.28
实验学时
4
实验名称
实验七Web配置实验
实验类型
□验证性□综合性设计性
实验目的:
熟悉ServletContext的功能和方法
掌握Web应用配置
掌握Web级初始参数和Servlet初始参数的获取方法
掌握转发的原理和实现方法
实验环境:
(包括软件平台和硬件平台)
JDK+Eclipse+MyEclipse+Tomcat
实验过程
1.新建一个WebProject,名为login1。
2.编写登录JSP页面:
/login.jsp,显示登录表单,
右击工程下的“WebRoot”目录,在弹出式菜单中选择【New】|【JSP】(或者【New】|【File】,保存文件名为*.jsp),设置JSP文件名为login.jsp,可以选择产生的JSP的模板,从下面的下拉列表中可以选择。
单击【Finish】,打开login.jsp文件,代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
">
MyJSP'login.jsp'startingpage
--
-->
登陆界面
ID:
密码:
3编写登录处理Servlet。
包:
cn.yctu.cs.javaee.experiment.ch07
类名:
LoginAction
映射地址:
/login.action
功能:
(1)取得ID和密码
(2)如果ID或密码为空,重定向到login.jsp页面
(3)ID写入Session
(4)使用ServletContext对象存储所有登录用户ID列表(存储方式自己设计)
(5)转发到主页JSP:
/main.jsp
packagecn.yctu.cs.javaee.experiment.ch07;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.sql.*;
importjava.util.ArrayList;
importjava.util.List;
importjavax.servlet.http.Cookie;
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;
publicclassLoginActionextendsHttpServlet{
//定义数据库连接对象
privateConnectioncn=null;
privateStringdriverName=null;//数据库驱动器
privateStringurl=null;//数据库地址URL
privatebooleancheck;
publicLoginAction(){
super();
}
publicvoiddestroy(){
super.destroy();//Justputs"destroy"stringinlog
//Putyourcodehere
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//取得用户注册表单提交的数据
Stringuserid=request.getParameter("userid");//用户userid
Stringpassword=request.getParameter("password");//密码
//判断登录帐号为空,则自动跳转到注册页面
if(userid!
=null&&password!
=null&&userid.trim().length()>0&&password.trim().length()>0){
setValue(request,"password",password);
setValue(request,"id",userid);
Cookiecookie01=newCookie("userid",userid);
response.addCookie(cookie01);
Stringsql="select*fromuserwhereuserid=?
andpassword=?
";
Connectioncn=null;
booleancheck=false;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
cn=DriverManager.getConnection("jdbc:
mysql:
//localhost:
3306/scott");
PreparedStatementps=cn.prepareStatement(sql);
ps.setString(1,userid);
ps.setString(2,password);
ResultSetrs=ps.executeQuery();
if(rs.next()){
check=true;
}
rs.close();
ps.close();
ResultSetMetaDatarsmd=rs.getMetaData();
introw=rsmd.getColumnCount();
if(row<=0){
response.sendRedirect("login.jsp");
}else{
request.getRequestDispatcher("main.action").forward(request,response);
}
}catch(Exceptione){
System.out.println("错误:
"+e.getMessage());
response.sendRedirect("login.jsp");
}finally{
try{
cn.close();
}catch(Exceptione){
}
}
}
if(check)
{
HttpSessionsession=request.getSession(true);
session=request.getSession(true);
//将会话对象保存到会话对象
session.setAttribute("userid",userid);
//获取Web上下文对象
ServletContextapplication=this.getServletContext();
//取得用户在线列表
ListuserList=(List)application.getAttribute("userList");
if(userList==null)
{
//用户首次登陆
userList=newArrayList();
application.setAttribute("userList",userList);
}
else{
//非首个用户登陆,增加到用户列表中
userList.add(userid);
}
response.sendRedirect("main.jsp");
}
else{
response.sendRedirect("login.jsp");
}
}
privatevoidsetValue(HttpServletRequestrequest,Stringkey,StringsetValue){
request.getSession().setAttribute(key,setValue);}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doGet(request,response);
}
publicvoidinit(ServletConfigconfig)throwsServletException{
super.init(config);
//取得Servlet配置的数据库出事参数
//driverName=config.getInitParameter("driverName");
driverName="com.mysql.jdbc.Driver";
//url=config.getInitParameter("url");
url="jdbc:
mysql:
//localhost:
3306/scott";
//Stringuser=config.getInitParameter("user");
Stringuser="root";
//Stringpassword=config.getInitParameter("password");
Stringpassword="123";
try{
Class.forName(driverName);
cn=DriverManager.getConnection(url,user,password);
}catch(Exceptione){
System.out.println("取得数据库连接错误:
"+e.getMessage());
}
}
}
4.编写OA系统主页JSP:
/main.jsp,如图7-2所示。
(1)取得保存在Session对象中的登录账号
(2)取得ServletContext中保存的在线用户ID列表,并显示
(3)显示到注销的超链接
(4)单击“注销”到注销处理Servlet
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"+request.getServerName()+":
"+request.getServerPort()+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
">
MyJSP'main.jsp'startingpage
--
-->
OA系统主页
登录帐号:
<%Stringid=(String)request.getSession().getAttribute("userid");request.setAttribute("id",id);%>
当前用户ID列表:
<%Listuserlist=(List)application.getAttribute("userList");
for(Objecto:
userlist){
out.print((String)o);
out.print("");}%>
注销
2、5.编写注销处理Servlet。
包:
cn.yctu.cs.javaee.experiment.ch07
类名:
LogoutAction
映射地址:
/logout.action
功能:
(1)从ServletContext中取出登录ID列表,删除当前登录ID,剩余登录ID列表保存回ServletContext中。
(2)销毁会话对象
(3)重定向到登录页面/login.jsp
packagecn.yctu.cs.javaee.experiment.ch07;
importjava.io.IOException;
importjava.io.PrintWriter;
importjava.sql.*;
importjava.util.ArrayList;
importjava.util.List;
importjavax.servlet.http.Cookie;
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;
publicclassLogoutActionextendsHttpServlet{
publicLogoutAction(){
super();
}
publicvoiddestroy(){
super.destroy();//Justputs"destroy"stringinlog
//Putyourcodehere
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.getSession().removeAttribute("userid");
request.getSession().removeAttribute("password");
HttpSessionsession=request.getSession(false);
if(session!
=null)
{
session.invalidate();
Stringuserid=(String)session.getAttribute("userid");
//获取Web上下文对象
ServletContextapplication=this.getServletContext();
ListuserList=(List)application.getAttribute("userList");
if(userList!
=null){
//用户列表中删除注销的用户帐号
userList.remove(userid);
}
//销毁会话对象
session.invalidate();
}//重定向到登录页面
response.sendRedirect("login.jsp");
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
}
publicvoidinit()throwsServletException{
//Putyourcodehere
}
}
3、6.编写监控登录用户列表的页面:
/admin.jsp。
显示所有在线用户列表
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
MyJSP'admin.jsp'startingpage
--
-->
监控用户登录
当前用户ID列表:
<%
Listuserlist=newArrayList();
application.setAttribute("userlist",userlist);%>
刷新