上一篇博文介绍了注册和登录模块,未看过的人欢迎翻我之前博文~
接下来就进入登录成功后的主界面,这里主要实现主界面的基础布局和管理员管理模块=w=
GitHub地址:https://github.com/DaiPanda/Blog-of-Dai
照例有任何问题欢迎下方评论>3<
(默认进入博文管理的博文列表界面,这里暂时不介绍博文管理模块,以后会更)
①登录成功后,登录的用户名将会显示在右上角,譬如刚刚那张图片的“胖达”
(使用session,之前登录成功后先是将登陆的adm对象保存在session中,再进行转发的,具体代码参考上一篇博文。
如果在index.jsp中获得对象为null,则代表未通过登录页面而是直接在地址栏中输入主页面的地址,这样会重定向到登录页面。)
图示如下:
②总的后台布局使用的是layui框架,主要是使用iframe实现页面的嵌套
(使用iframe标签,相关a标签中的target值对应iframe的name值)
图示如下:
③相关步骤如下:
第一步:通过layui的后台框架将index.jsp的大体结构搭好
第二步:对官方的后台框架进行修改,主要修改左侧导航栏的代码内容
第三步:使用iframe布局达到页面嵌套的效果,即点击不同的导航栏按钮右侧链接不同的页面
第四步:通过session判断是否经过了登录页面
要想实现如图主界面,除了之前几篇博文写的准备工作以外,你还需要这样的目录结构
当然,之前的准备工作没有看的,建议从个人博客的第三篇博文看起
地址:https://blog.csdn.net/DaiYuMeng/article/details/104677362
<%@page import="pojo.Adm"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file="base.jsp"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
熊猫后台
<%
String name;
Adm a = (Adm) request.getSession().getAttribute("admin");
if (a == null) {
response.sendRedirect("login.jsp");
return;
} else {
name = a.getAdm_name();
}
%>
①管理员列表(含分页)
②编辑管理员
③删除管理员
①管理员管理在左侧导航栏第六个管理的位置,相关具体代码在index.jsp中位置如下:
(总体代码在上方)
②listAdm.jsp是使用layui里的经典的数据表格布局,这就对他从后台传回来的数据有一定的要求,官网要求如下:
(详细介绍及扩展部分见官网:https://www.layui.com/doc/modules/table.html)
③layui的table布局中有三种渲染方法:方法渲染、自动渲染、静态表格渲染,这里使用的是方法渲染,要求如下:
cols里面各个field对应于每一列的表头,其field的值应该与后台传过来的属性变量名是一样的,这里我的命名和数据库中字段名也是一样的
(这里渲染的数据还可以使用自定义列模板templet,以后再更该用法)
④listAdm.jsp渲染数据表格时还使用了分页效果,相关步骤如下:
第一步:设置开启table的分页效果(page:true)
第二步:servlet层获取limit(默认10)和page(默认1)参数值
第三步:通过AdmDaoImpl.java里的getPageAdm(page,limit)方法返回相关管理员每页数据,是一个ArrayList对象
第四步:通过AdmDaoImpl.java里的getAllAdm()方法返回相关管理员总数,是一个int变量
代码图示如下:
⑤前台回调数据实现管理员列表时,具体来说接收的是符合一定规则的json数据,这里我掌握了两个方法
第一个方法:(1)先使用map集合,保存相关数据格式
(2)再利用google的json解析包将map格式转为string格式,google的json包目录如下,没有的可以私信我
(3)然后返回给前台,ajax回调时选择json格式就会自动把其转换为json格式
(我使用这个方法,但我觉得这个相对下面比较复杂)
第二个方法:也是先使用map存储数据,再利用json的jar包,首先你需要如下jar包,没有的可以私信我
代码图示如下:
⑥listAdm.jsp使用了layui经典的弹出层效果制作编辑管理员信息,图例如下:
操作步骤:根据满足条件的事件触发执行弹出层动画,弹出层由另外的页面(editAdm.jsp)组成
⑦综上,listAdm.jsp详细步骤如下
第一步:运用方法渲染的格式,其table的id值与渲染表格的elem值要对应
图示如下:
第二步:使用layui的数据表格table结构,在url里写入对应的数据接口(管理员列表的数据接口)
图示如下:
第二步:写入对应的工具条模板,就相当于操作模板,注意script的type值
图示如下:
第三步:监听工具条,layEvent对应
举例如下:
第四步:(1)点击某一项的编辑按钮时,它就触发监听工具条的事件,通过layEvent确定触发的是“编辑”事件
(2)利用弹出层的content属性,走到servlet层,同时将adm_id传回去
(3)它获取adm_id是通过data.adm_id的方法,因为之前渲染数据时数据接口返回的值都存在data里头
图示如下:
(4)它先走selectAdm这个控制层的接口,然后从Dao层的getOneAdm()通过adm_id读取对应的一条管理员的数据,返回的是Adm对象,将其对应信息保存在request属性中,最后再将数据转发到editAdm.jsp页面
图示如下:
(5)编辑弹出层主要是利用layui的form组件,利用getAttribute()方法获得上一步存储的属性值
图示如下:
第五步:(1)点击某一项的删除按钮时,它就触发监听工具条的事件,通过layEvent确定触发的是“删除”事件
(2)利用layui提供的confirm弹出对话框,提示用户执行下一步操作
(3)当用户点击“确定”时,先删除对应行的DOM结构(假删除),再通过ajax向服务端发送删除指令,调用delAdm接口,传过去adm_id(真删除)
图示如下:
(4)在delAdm接口中,先获得传过来的id,再利用Dao层的deleteAdm(int id)方法,这个方法返回一个boolean值
(5)将这个boolean值返回给前端,然后前端通过这个值判断是否删除成功,删除成功就会弹出“删除成功”提示
图示如下:
首先,Adm.java、AdmDao.java以及AdmDaoImpl.java等已经在上一篇博文里详细写了,这里就不赘述了
①src-->在servlet包里-->新建一个Servlet文件,命名为ListAdm-->在URL mappings中改名为/listAdm-->键入代码,如下
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONArray;
import org.json.JSONObject;
import com.google.gson.JsonObject;
import dao.AdmDao;
import dao.AdmDaoImpl;
import pojo.Adm;
import util.JsonUtil;
/**
* Servlet implementation class ListAdm
*/
@WebServlet("/listAdm")
public class ListAdm extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public ListAdm() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int limit = 0;
int page = 0;
PrintWriter writer = null;
try {
limit = Integer.parseInt(request.getParameter("limit"));
page = Integer.parseInt(request.getParameter("page"));
AdmDao a = new AdmDaoImpl();
ArrayList aList = a.getPageAdm(page, limit);
ArrayList aListTotal = a.getAllAdm();
Map map = new HashMap();
map.put("code", 0);
map.put("msg", "");
map.put("count", aListTotal.size());
map.put("data", aList);
//String jsonStr = JsonUtil.beanToString(map);
//writer.write(jsonStr);
writer= response.getWriter();
net.sf.json.JSONObject jsonStr = net.sf.json.JSONObject.fromObject(map);
writer.print(jsonStr);
}catch(Exception e) {
e.printStackTrace();
}finally {
writer.flush();
writer.close();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
②src-->在servlet包里-->新建一个Servlet文件,命名为SelectAdm-->在URL mappings中改名为/selectAdm-->键入代码,如下
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.AdmDao;
import dao.AdmDaoImpl;
import dao.CategoryDao;
import dao.CategoryDaoImpl;
import pojo.Adm;
import pojo.Category;
/**
* Servlet implementation class SelectAdm
*/
@WebServlet("/selectAdm")
public class SelectAdm extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public SelectAdm() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
int adm_id = Integer.parseInt(request.getParameter("adm_id"));
AdmDao a = new AdmDaoImpl();
Adm adm = a.getOneAdm(adm_id);
if(adm!=null) {
request.setAttribute("adm_id", adm.getAdm_id());
request.setAttribute("adm_name",adm.getAdm_name());
request.setAttribute("adm_password", adm.getAdm_passward());
request.getRequestDispatcher("adm/editAdm.jsp").forward(request, response);//转发到成功页面
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
③src-->在servlet包里-->新建一个Servlet文件,命名为EditAdm-->在URL mappings中改名为/editAdm-->键入代码,如下
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.AdmDao;
import dao.AdmDaoImpl;
import pojo.Adm;
/**
* Servlet implementation class EditAdm
*/
@WebServlet("/editAdm")
public class EditAdm extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public EditAdm() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String result = "false";
PrintWriter writer = null;
try {
int adm_id = Integer.parseInt(request.getParameter("adm_id"));
String adm_name = request.getParameter("adm_name");
String adm_password = request.getParameter("adm_password");
Adm adm = new Adm();
adm.setAdm_id(adm_id);
adm.setAdm_name(adm_name);
adm.setAdm_passward(adm_password);
AdmDao a = new AdmDaoImpl();
boolean flag = a.updateAdm(adm);
System.out.println(flag);
if(flag) {
result ="true";
}
writer = response.getWriter();
writer.write(result);
}catch(Exception e) {
e.printStackTrace();
}finally {
writer.flush();
writer.close();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
④在WebContent的adm目录下-->新建jsp文件,命名为listAdm.jsp-->键入代码,如下
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file="../base.jsp"%>
管理员列表
⑥在WebContent的adm目录下-->新建jsp文件,命名为editAdm.jsp-->键入代码,如下
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file ="../base.jsp" %>
编辑管理员
<%
int adm_id = (int)request.getAttribute("adm_id");
String adm_name = (String)request.getAttribute("adm_name");
String adm_password = (String)request.getAttribute("adm_password");
%>
(1)转发地址栏不会发生变化,显示的依然是上一个地址栏的地址
(2)转发一般带ServletRequest和Servletresponse对象过去,所以数据不会丢失
(3)重定向地址栏会发生变化
(4)重定向没有带数据过去,即数据会丢失
注:GitHub下载地址在文章顶部,也传到了csdn下载上面,希望能对你有所帮助;
也欢迎关注我的个人微信公众号【大胖猫的马太效应】,回复关键字JavaWeb博客后台管理系统获得本后台项目所有源码噢~