首先在账号密码正确时进入主页面,在UserServlet类中加入:
package com.lzy.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import com.lzy.pojo.User;
import com.lzy.service.UserService;
import com.lzy.service.imp.UserServiceImpl;
public class UserServlet extends HttpServlet {
//声明日志对象
Logger logger=Logger.getLogger(UserServlet.class);
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//设置请求编码格式
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setCharacterEncoding("text/html;charset=utf-8");
//获取操作符
String oper=req.getParameter("oper");
if("login".equals(oper)){
//响应登陆操作
checkUserLogin(req,resp);
}else if("reg".equals(oper)){
//响应注册操作
}else{
logger.debug("响应错误"+oper);
}
}
private void checkUserLogin(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取请求信息
String uname=req.getParameter("uname");
String pwd=req.getParameter("pwd");
//处理请求信息
//校验
UserService us=new UserServiceImpl();
User u=us.checkUserLoginService(uname, pwd);
if(u!=null){
//重定向
resp.sendRedirect("/ma/main/main.jsp");
}
}
}
48-51行代码,当账号密码正确时,进入main.jsp
在WebRoot文件下创建main文件分别创建main.jsp footer.jsp left.jsp right.jsp top.jsp四个jsp文件,在把
文件中的五个html内容分别复制到对应的jsp文件中(这里的index.html复制到right.jsp中)
其中main.html文件中的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>信息管理系统界面</title>
</head>
<frameset rows="88,*,31" cols="*" frameborder="no" border="0" framespacing="0">
<frame src="top.html" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
<frameset cols="187,*" frameborder="no" border="0" framespacing="0">
<frame src="left.html" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame" title="leftFrame" />
<frame src="index.html" name="rightFrame" id="rightFrame" title="rightFrame" />
</frameset>
<frame src="footer.html" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>
<noframes><body>
</body></noframes>
</html>
要把第八行的top.html改为main/top.jsp
第10行的left.html改为main/left.jsp
第11行的index.html改为main/right.jsp
第13行的footer.html改为main/footer.jsp.
改后的jsp代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>信息管理系统界面</title>
</head>
<frameset rows="88,*,31" cols="*" frameborder="no" border="0" framespacing="0">
<frame src="main/top.jsp" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" />
<frameset cols="187,*" frameborder="no" border="0" framespacing="0">
<frame src="main/left.jsp" name="leftFrame" scrolling="No" noresize="noresize" id="leftFrame" title="leftFrame" />
<frame src="main/right.jsp" name="rightFrame" id="rightFrame" title="rightFrame" />
</frameset>
<frame src="main/footer.jsp" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" title="bottomFrame" />
</frameset>
<noframes><body>
</body>
</noframes>
</html>
footer.jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="footer">
<span>仅供学习交流,请勿用于任何商业用途</span>
<i>版权所有 2014 uimaker.com</i>
</div>
</body>
</html>
left.jsp代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" src="js/jquery.js"></script>
<script type="text/javascript">
$(function(){
//导航切换
$(".menuson .header").click(function(){
var $parent = $(this).parent();
$(".menuson>li.active").not($parent).removeClass("active open").find('.sub-menus').hide();
$parent.addClass("active");
if(!!$(this).next('.sub-menus').size()){
if($parent.hasClass("open")){
$parent.removeClass("open").find('.sub-menus').hide();
}else{
$parent.addClass("open").find('.sub-menus').show();
}
}
});
// 三级菜单点击
$('.sub-menus li').click(function(e) {
$(".sub-menus li.active").removeClass("active")
$(this).addClass("active");
});
$('.title').click(function(){
var $ul = $(this).next('ul');
$('dd').find('.menuson').slideUp();
if($ul.is(':visible')){
$(this).next('.menuson').slideUp();
}else{
$(this).next('.menuson').slideDown();
}
});
})
</script>
</head>
<body style="background:#fff3e1;">
<div class="lefttop"><span></span>通讯录</div>
<dl class="leftmenu">
<dd>
<div class="title">
<span><img src="images/leftico01.png" /></span>管理信息
</div>
<ul class="menuson">
<li>
<div class="header">
<cite></cite>
<a href="index.html" target="rightFrame">首页模版</a>
<i></i>
</div>
<ul class="sub-menus">
<li><a href="javascript:;">文件管理</a></li>
<li><a href="javascript:;">模型信息配置</a></li>
<li><a href="javascript:;">基本内容</a></li>
<li><a href="javascript:;">自定义</a></li>
</ul>
</li>
<li>
<div class="header">
<cite></cite>
<a href="right.html" target="rightFrame">数据列表</a>
<i></i>
</div>
<ul class="sub-menus">
<li><a href="javascript:;">文件数据</a></li>
<li><a href="javascript:;">学生数据列表</a></li>
<li><a href="javascript:;">我的数据列表</a></li>
<li><a href="javascript:;">自定义</a></li>
</ul>
</li>
<li class="active"><cite></cite><a href="right.html" target="rightFrame">数据列表</a><i></i></li>
<li><cite></cite><a href="imgtable.html" target="rightFrame">图片数据表</a><i></i></li>
<li><cite></cite><a href="form.html" target="rightFrame">添加编辑</a><i></i></li>
<li><cite></cite><a href="imglist.html" target="rightFrame">图片列表</a><i></i></li>
<li><cite></cite><a href="imglist1.html" target="rightFrame">自定义</a><i></i></li>
<li><cite></cite><a href="tools.html" target="rightFrame">常用工具</a><i></i></li>
<li><cite></cite><a href="filelist.html" target="rightFrame">信息管理</a><i></i></li>
<li><cite></cite><a href="tab.html" target="rightFrame">Tab页</a><i></i></li>
<li><cite></cite><a href="error.html" target="rightFrame">404页面</a><i></i></li>
</ul>
</dd>
<dd>
<div class="title">
<span><img src="images/leftico02.png" /></span>其他设置
</div>
<ul class="menuson">
<li><cite></cite><a href="flow.html" target="rightFrame">流程图</a><i></i></li>
<li><cite></cite><a href="project.html" target="rightFrame">项目申报</a><i></i></li>
<li><cite></cite><a href="search.html" target="rightFrame">档案列表显示</a><i></i></li>
<li><cite></cite><a href="tech.html" target="rightFrame">技术支持</a><i></i></li>
</ul>
</dd>
<dd><div class="title"><span><img src="images/leftico03.png" /></span>编辑器</div>
<ul class="menuson">
<li><cite></cite><a href="#">自定义</a><i></i></li>
<li><cite></cite><a href="#">常用资料</a><i></i></li>
<li><cite></cite><a href="#">信息列表</a><i></i></li>
<li><cite></cite><a href="#">其他</a><i></i></li>
</ul>
</dd>
<dd><div class="title"><span><img src="images/leftico04.png" /></span>日期管理</div>
<ul class="menuson">
<li><cite></cite><a href="#">自定义</a><i></i></li>
<li><cite></cite><a href="#">常用资料</a><i></i></li>
<li><cite></cite><a href="#">信息列表</a><i></i></li>
<li><cite></cite><a href="#">其他</a><i></i></li>
</ul>
</dd>
</dl>
</body>
</html>
right.jsp代码如下
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/jquery.js"></script>
</head>
<body>
<div class="place">
<span>位置:</span>
<ul class="placeul">
<li><a href="#">首页</a></li>
</ul>
</div>
<div class="mainindex">
<div class="welinfo">
<span><img src="images/sun.png" alt="天气" /></span>
<b>Admin早上好,欢迎使用信息管理系统</b>(admin@uimaker.com)
<a href="#">帐号设置</a>
</div>
<div class="welinfo">
<span><img src="images/time.png" alt="时间" /></span>
<i>您上次登录的时间:2013-10-09 15:22</i> (不是您登录的?<a href="#">请点这里</a>)
</div>
<div class="xline"></div>
<ul class="iconlist">
<li><img src="images/ico01.png" /><p><a href="#">管理设置</a></p></li>
<li><img src="images/ico02.png" /><p><a href="#">发布文章</a></p></li>
<li><img src="images/ico03.png" /><p><a href="#">数据统计</a></p></li>
<li><img src="images/ico04.png" /><p><a href="#">文件上传</a></p></li>
<li><img src="images/ico05.png" /><p><a href="#">目录管理</a></p></li>
<li><img src="images/ico06.png" /><p><a href="#">查询</a></p></li>
</ul>
<div class="ibox"><a class="ibtn"><img src="images/iadd.png" />添加新的快捷功能</a></div>
<div class="xline"></div>
<div class="box"></div>
<div class="welinfo">
<span><img src="images/dp.png" alt="提醒" /></span>
<b>Uimaker信息管理系统使用指南</b>
</div>
<ul class="infolist">
<li><span>您可以快速进行文章发布管理操作</span><a class="ibtn">发布或管理文章</a></li>
<li><span>您可以快速发布产品</span><a class="ibtn">发布或管理产品</a></li>
<li><span>您可以进行密码修改、账户设置等操作</span><a class="ibtn">账户管理</a></li>
</ul>
<div class="xline"></div>
<div class="uimakerinfo"><b>查看Uimaker网站使用指南,您可以了解到多种风格的B/S后台管理界面,软件界面设计,图标设计,手机界面等相关信息</b>(<a href="http://www.uimaker.com" target="_blank">www.uimaker.com</a>)</div>
<ul class="umlist">
<li><a href="#">如何发布文章</a></li>
<li><a href="#">如何访问网站</a></li>
<li><a href="#">如何管理广告</a></li>
<li><a href="#">后台用户设置(权限)</a></li>
<li><a href="#">系统设置</a></li>
</ul>
</div>
</body>
</html>
top.jsp代码如下:
<%@ page language="java" import="java.util.*,com.lzy.pojo.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" src="js/jquery.js"></script>
<script type="text/javascript">
$(function(){
//顶部导航切换
$(".nav li a").click(function(){
$(".nav li a.selected").removeClass("selected")
$(this).addClass("selected");
})
})
</script>
</head>
<body style="background:url(images/topbg.gif) repeat-x;">
<div class="topleft">
<a href="main.html" target="_parent"><img src="images/logo.png" title="系统首页" /></a>
</div>
<ul class="nav">
<li><a href="default.html" target="rightFrame" class="selected"><img src="images/icon01.png" title="工作台" /><h2>工作台</h2></a></li>
<li><a href="imgtable.html" target="rightFrame"><img src="images/icon02.png" title="模型管理" /><h2>模型管理</h2></a></li>
<li><a href="imglist.html" target="rightFrame"><img src="images/icon03.png" title="模块设计" /><h2>模块设计</h2></a></li>
<li><a href="tools.html" target="rightFrame"><img src="images/icon04.png" title="常用工具" /><h2>常用工具</h2></a></li>
<li><a href="computer.html" target="rightFrame"><img src="images/icon05.png" title="文件管理" /><h2>文件管理</h2></a></li>
<li><a href="tab.html" target="rightFrame"><img src="images/icon06.png" title="系统设置" /><h2>系统设置</h2></a></li>
</ul>
<div class="topright">
<ul>
<li><span><img src="images/help.png" title="帮助" class="helpimg"/></span><a href="#">帮助</a></li>
<li><a href="#">关于</a></li>
<li><a href="login.html" target="_parent">退出</a></li>
</ul>
<div class="user">
<span>admin</span>
<i>消息</i>
<b>5</b>
</div>
</div>
</body>
</html>
当账号密码正确时进入以下界面:
接下来要做的就是将此界面右上角的“admin”改为登陆进去的用户名,(比如张三登进去了,就显示张三)还有点击退出后回到登录界面(注:退回主界面不是单纯的退出,还要强制销毁session等一系列操作)
将admin变为用户名:
首先在servlet类中获取session对象,再将用户数据存储到session中
package com.lzy.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import com.lzy.pojo.User;
import com.lzy.service.UserService;
import com.lzy.service.imp.UserServiceImpl;
public class UserServlet extends HttpServlet {
//声明日志对象
Logger logger=Logger.getLogger(UserServlet.class);
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//设置请求编码格式
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setCharacterEncoding("text/html;charset=utf-8");
//获取操作符
String oper=req.getParameter("oper");
if("login".equals(oper)){
//响应登陆操作
checkUserLogin(req,resp);
}else if("reg".equals(oper)){
//响应注册操作
}else{
logger.debug("响应错误"+oper);
}
}
private void checkUserLogin(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取请求信息
String uname=req.getParameter("uname");
String pwd=req.getParameter("pwd");
//处理请求信息
//校验
UserService us=new UserServiceImpl();
User u=us.checkUserLoginService(uname, pwd);
if(u!=null){
//获取Session对象
HttpSession hs=req.getSession();
//将用户数据存储到session中
hs.setAttribute("user", u);
//重定向
resp.sendRedirect("/ma/main/main.jsp");
}
}
}
加入50-53行代码
然后在top.jsp中找到
将admin改为<%=((User)session.getAttribute(“user”)).getUname() %>
同时在在第一行导包
运行效果:
实现退出功能:
最初想的是直接在退出的href中加入"login.jsp"即可
<li><a href="login.jsp" target="_parent">退出</a></li>
虽然也能成功退到登陆页面,但并没有销毁session等,所以该方法并不可取。
正确的退出方式:
首先在top.jsp中使用jQuery加入以下代码
//退出功能
$("#out").click(function(){
var flag=window.confirm("你真的要退出吗?");
if(flag){
window.location.href="user?oper=out";
}
})
退出连接改为
<li><a href="javascript:void(0)" id="out">退出</a></li>
此时top.jsp整体代码:
<%@ page language="java" import="java.util.*,com.lzy.pojo.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
<script language="JavaScript" src="js/jquery.js"></script>
<script type="text/javascript">
$(function(){
//顶部导航切换
$(".nav li a").click(function(){
$(".nav li a.selected").removeClass("selected")
$(this).addClass("selected");
})
//退出功能
$("#out").click(function(){
var flag=window.confirm("你真的要退出吗?");
if(flag){
window.location.href="user?oper=out";
}
})
})
</script>
</head>
<body style="background:url(images/topbg.gif) repeat-x;">
<div class="topleft">
<a href="main.html" target="_parent"><img src="images/logo.png" title="系统首页" /></a>
</div>
<ul class="nav">
<li><a href="default.html" target="rightFrame" class="selected"><img src="images/icon01.png" title="工作台" /><h2>工作台</h2></a></li>
<li><a href="imgtable.html" target="rightFrame"><img src="images/icon02.png" title="模型管理" /><h2>模型管理</h2></a></li>
<li><a href="imglist.html" target="rightFrame"><img src="images/icon03.png" title="模块设计" /><h2>模块设计</h2></a></li>
<li><a href="tools.html" target="rightFrame"><img src="images/icon04.png" title="常用工具" /><h2>常用工具</h2></a></li>
<li><a href="computer.html" target="rightFrame"><img src="images/icon05.png" title="文件管理" /><h2>文件管理</h2></a></li>
<li><a href="tab.html" target="rightFrame"><img src="images/icon06.png" title="系统设置" /><h2>系统设置</h2></a></li>
</ul>
<div class="topright">
<ul>
<li><span><img src="images/help.png" title="帮助" class="helpimg"/></span><a href="#">帮助</a></li>
<li><a href="#">关于</a></li>
<li><a href="javascript:void(0)" id="out">退出</a></li>
</ul>
<div class="user">
<span><%=((User)session.getAttribute("user")).getUname() %></span>
<i>消息</i>
<b>5</b>
</div>
</div>
</body>
</html>
href="javascript:void(0)"当点击退出时,退出事件会被阻止,会执行jQuery写的方法,当点击确定退出时oper就会等于out,不在等于login,所以在UseSrervlet类中加入以下代码
String oper=req.getParameter("oper");
if("login".equals(oper)){
//响应登陆操作
checkUserLogin(req,resp);
}else if("reg".equals(oper)){
//响应注册操作
}else if("out".equals(oper)){
userOut(req,resp);
}else{
logger.debug("响应错误"+oper);
}
}
添加7-9行代码,当oper==out时,执行退出操作,同时添加退出的方法
private void userOut(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取session对象
HttpSession hs=req.getSession();
//强制销毁session
hs.invalidate();
//重定向到登录页面
resp.sendRedirect("/ma/login.jsp");
}
此时的UserServlet类的全部代码:
package com.lzy.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import com.lzy.pojo.User;
import com.lzy.service.UserService;
import com.lzy.service.imp.UserServiceImpl;
public class UserServlet extends HttpServlet {
//声明日志对象
Logger logger=Logger.getLogger(UserServlet.class);
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//设置请求编码格式
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setCharacterEncoding("text/html;charset=utf-8");
//获取操作符
String oper=req.getParameter("oper");
if("login".equals(oper)){
//响应登陆操作
checkUserLogin(req,resp);
}else if("reg".equals(oper)){
//响应注册操作
}else if("out".equals(oper)){
userOut(req,resp);
}else{
logger.debug("响应错误"+oper);
}
}
private void userOut(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取session对象
HttpSession hs=req.getSession();
//强制销毁session
hs.invalidate();
//重定向到登录页面
resp.sendRedirect("/ma/login.jsp");
}
private void checkUserLogin(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取请求信息
String uname=req.getParameter("uname");
String pwd=req.getParameter("pwd");
//处理请求信息
//校验
UserService us=new UserServiceImpl();
User u=us.checkUserLoginService(uname, pwd);
if(u!=null){
//获取Session对象
HttpSession hs=req.getSession();
//将用户数据存储到session中
hs.setAttribute("user", u);
//重定向
resp.sendRedirect("/ma/main/main.jsp");
}
}
}
然后执行进行测试
执行前:
点击退出执行后:
此时会发现退出的仅仅是top.jsp其他的页面并没有退出,
这是因为window.location.href=“user?oper=out”;的作用是当前页面内,而该页面是吧一个页面分为好多块,每块都是独立的,所以只是把top.jsp给退掉,left.jsp,right.jsp等都没有退掉。
解决:
将window.location.href=“user?oper=out”;改为window.top.location.href=“user?oper=out”;
解析:window代表当前整个页面,top是它上一层,也就是上一层的location走该请求(“user?oper=out”)