博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaWeb_(MVC)管理员后台商品查询demo
阅读量:4573 次
发布时间:2019-06-08

本文共 15502 字,大约阅读时间需要 51 分钟。

 

 

MVC分层实现管理员后台商品查询

 

  MVC层即model view controller

  Model(模型):模型代表着核心的业务逻辑和数据(不要理解成Model只是实体类)

  View(视图):视图应该关注与如何展示数据,而不应该包含任何业务逻辑(业务逻辑应写在Model中)

  Controller(控制器):控制器控制着程序的逻辑,并充当着视图和模型之间的协调角色。控制器从视图层接收用户输入的信息,然后使用模型来执行特定的操作,并把最终的结果回传给视图

  model层:存放业务逻辑处理,不直接和数据库打交道但存放关于数据库处理的操作

  Dao层:对数据库进行数据持久化操作,操作直接针对数据库

 

  index.jsp进行首页的展示,用户可以在首页进行普通用户的注册和登录,当使用管理员账号登录时候可以进入商品后台对其进行进一步管理(LoginServlet.java中实现)

  项目结构

  

 

  DBUtil.java模拟数据库,已存在的管理员用户和商品信息列表如下,注册时只能对普通用户进行注册,Gary和Gary2的isAdmin为True

public static Map
userMap = new HashMap
(); public static List
goodsList = new ArrayList
(); static { addUser(new User("Gary","123",10,"男",true)); addUser(new User("Gary2","456",20,"男",true)); goodsList.add(new Goods("香蕉","这个是香蕉",100,110)); goodsList.add(new Goods("苹果","这个是苹果",200,120)); goodsList.add(new Goods("西瓜","这个是西瓜",300,130)); goodsList.add(new Goods("桃子","这个是桃子",400,140)); }

 

 

逻辑层:处理代码请求

package com.Gary.controller;import java.io.IOException;import java.util.List;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 com.Gary.model.Goods;import com.Gary.service.GoodsService;@WebServlet("/admin/goods_list")public class GoodsListServlet extends HttpServlet {        @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {            doGet(req, resp);    }        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        List
list = new GoodsService().selectAllGoods(); request.setAttribute("list", list); request.getRequestDispatcher("/admin/goods_list.jsp").forward(request, response); }}
GoodsListServlet.java

 

package com.Gary.controller;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 com.Gary.model.User;import com.Gary.service.UserService;@WebServlet("/login_do")public class LoginServlet extends HttpServlet {    @Override    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String username = request.getParameter("username");        String password = request.getParameter("password");                UserService service = new UserService();        User user =service.login(username, password);                System.out.println(user);        if(user!=null) {            request.getSession().setAttribute("user", user);            //System.out.println(user);            //TODO            if(user.isAdmin()) {                //管理员                //response.sendRedirect(request.getContextPath()+"/admin/goods_list.jsp");                request.getRequestDispatcher("admin/goods_list").forward(request, response);                //不需要传递数据时可以使用重定向                //response.sendRedirect(request.getContextPath()+"/admin/good_list");            }else {                //普通用户                //System.out.println("完成");                request.getRequestDispatcher("/").forward(request, response);            }        }else {            request.setAttribute("msg", "用户名或密码错误,请重新登录!");            request.getRequestDispatcher("/login.jsp").forward(request, response);        }    }}
LoginServlet.java

 

package com.Gary.controller;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 com.Gary.service.UserService;/** * Servlet implementation class RegisterService */@WebServlet("/register_do")public class RegisterService extends HttpServlet {        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //设置中文编码        request.setCharacterEncoding("utf-8");        String username = request.getParameter("username");        String password = request.getParameter("password");        int age = Integer.parseInt(request.getParameter("age"));        String sex = request.getParameter("sex");                UserService  userService = new UserService();        boolean isSuccess = userService.register(username,password,age,sex);        if(isSuccess) {            request.setAttribute("msg", "注册成功,请登录!");            request.getRequestDispatcher("/login.jsp").forward(request, response);        }else {            request.setAttribute("msg", "用户名重复,请重新填写");            request.getRequestDispatcher("/register.jsp").forward(request, response);        }    }}
RegisterService.java

 

DAO层:将数据存到数据库中

package com.Gary.dao;import java.util.List;import com.Gary.model.Goods;import com.Gary.util.DBUtil;public class GoodsDao {    public    List
getAllGoods(){ return DBUtil.goodsList; }}
GoodsDao.java

 

package com.Gary.dao;import com.Gary.model.User;import com.Gary.util.DBUtil;public class UserDao {        public boolean isExist(String username) {        return DBUtil.userMap.containsKey(username);    }        public boolean addUser(String username,String password,int age,String sex) {        if(isExist(username))    return false;        User u = new User(username,password,age,sex,false);        DBUtil.userMap.put(u.getUsername(),u);        return true;    }        public User getUserByUP(String username,String password) {        if(isExist(username)==false)     return null;        User u = DBUtil.userMap.get(username);        if(u.getPassword().equals(password))return u;        else    return null;    }        }
UserDao.java

 

model层:存放我们的实体类,与数据库中的属性值基本保持一致

package com.Gary.model;public class Goods {    private String name;    private String des;    private int price;    private int inventory;    public Goods(String name, String des, int price, int inventory) {        super();        this.name = name;        this.des = des;        this.price = price;        this.inventory = inventory;    }        public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getDes() {        return des;    }    public void setDes(String des) {        this.des = des;    }    public int getPrice() {        return price;    }    public void setPrice(int price) {        this.price = price;    }    public int getInventory() {        return inventory;    }    public void setInventory(int inventory) {        this.inventory = inventory;    }    }
Goods.java

 

package com.Gary.model;public class User {    private String username;    private String password;    private int age;    private String sex;    private boolean isAdmin=false;    //判断是否是管理员账号        public User(String username, String password, int age, String sex, boolean isAdmin) {        super();        this.username = username;        this.password = password;        this.age = age;        this.sex = sex;        this.isAdmin = isAdmin;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public boolean isAdmin() {        return isAdmin;    }    public void setAdmin(boolean isAdmin) {        this.isAdmin = isAdmin;    }    }
User.java

 

service层:存放业务逻辑处理

package com.Gary.service;import java.util.List;import com.Gary.dao.GoodsDao;import com.Gary.model.Goods;public class GoodsService {    public List
selectAllGoods(){ return new GoodsDao().getAllGoods(); }}
GoodsService.java

 

package com.Gary.service;import com.Gary.dao.UserDao;import com.Gary.model.User;public class UserService {    //处理注册请求    public boolean register(String username,String password,int age ,String sex) {        UserDao userDao = new UserDao();        boolean isExist =userDao.isExist(username);        if(isExist)                return false;        else             userDao.addUser(username, password, age, sex);        return true;    }        public User login(String username,String password) {        return new UserDao().getUserByUP(username, password);    }}
UserService.java

 

util层:辅助作用  【我用来做数据库的模拟】

package com.Gary.util;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import com.Gary.model.Goods;import com.Gary.model.User;//模拟数据库public class DBUtil {    public static Map
userMap = new HashMap
(); public static List
goodsList = new ArrayList
(); static { addUser(new User("Gary","123",10,"男",true)); addUser(new User("Gary2","456",20,"男",true)); goodsList.add(new Goods("香蕉","这个是香蕉",100,110)); goodsList.add(new Goods("苹果","这个是苹果",200,120)); goodsList.add(new Goods("西瓜","这个是西瓜",300,130)); goodsList.add(new Goods("桃子","这个是桃子",400,140)); } private static void addUser(User user) { userMap.put(user.getUsername(), user); } }
DBUtil.java

 

商品列表页面

<%@page import="com.Gary.model.Goods"%><%@page import="java.util.List"%><%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here

商品管理

添加
list = (List
)request.getAttribute("list");for(Goods goods : list){ %>
<%List
<%}%>
商品名 描述 价格 库存 操作
<%=goods.getName() %> <%=goods.getDes() %> <%=goods.getPrice() %> <%=goods.getInventory() %> 删除 修改
goods_list.jsp

 

首页面

<%@ page import="com.Gary.model.User" %><%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here<%Object user = session.getAttribute("user");if(user==null){ %> 登录 注册 <% }else{ out.println("当前登录用户:"+((User)user).getUsername());}%>
各种商品的展示
index.jsp

 

用户登录页面

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here<%if(request.getAttribute("msg")!=null) out.println(request.getAttribute("msg")+"
");%>登录

用户名:
密码:
login.jsp

 

用户注册页面

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here<%if(request.getAttribute("msg")!=null) out.println(request.getAttribute("msg")+"
");%>注册

用户名:
密码:
年龄:
性别: 男
register.jsp

 

 

实现过程

  index.jsp判断有无用户登录,有用户登录时展示用户信息,若无用户登录则显示用户注册登录

<%Object user = session.getAttribute("user");if(user==null){    %>    登录    注册    <%         }else{    out.println("当前登录用户:"+((User)user).getUsername());}%>

 

  用户注册后将表单提交给register_do

用户名:
密码:
年龄:
性别: 男

 

  创建用户数据模型User,java和Goods.java

private String username;    private String password;    private int age;    private String sex;    private boolean isAdmin=false;    //判断是否是管理员账号

  

private String name;    private String des;    //商品描述信息    private int price;    private int inventory;    //商品库存

 

  DBUtil.java模拟数据库,将用户与商品存放到List<>集合中

public static Map
userMap = new HashMap
(); public static List
goodsList = new ArrayList
(); static { addUser(new User("Gary","123",10,"男",true)); addUser(new User("Gary2","456",20,"男",true)); goodsList.add(new Goods("香蕉","这个是香蕉",100,110)); goodsList.add(new Goods("苹果","这个是苹果",200,120)); goodsList.add(new Goods("西瓜","这个是西瓜",300,130)); goodsList.add(new Goods("桃子","这个是桃子",400,140)); } private static void addUser(User user) { userMap.put(user.getUsername(), user); }

 

  UserDao.java和GoodDao.java处理数据库逻辑

//用户是否退出登录    public boolean isExist(String username) {        return DBUtil.userMap.containsKey(username);    }        //添加用户    public boolean addUser(String username,String password,int age,String sex) {        if(isExist(username))    return false;        User u = new User(username,password,age,sex,false);        DBUtil.userMap.put(u.getUsername(),u);        return true;    }        //判断用户是否登录成功    public User getUserByUP(String username,String password) {        if(isExist(username)==false)     return null;        User u = DBUtil.userMap.get(username);        if(u.getPassword().equals(password))return u;        else    return null;    }

 

public class GoodsDao {    //列出所有的商品    public    List
getAllGoods(){ return DBUtil.goodsList; }}

 

  RegisterService.java处理用户注册信息,处理用户的注册和登录

@WebServlet("/register_do")public class RegisterService extends HttpServlet {        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //设置中文编码        request.setCharacterEncoding("utf-8");        String username = request.getParameter("username");        String password = request.getParameter("password");        int age = Integer.parseInt(request.getParameter("age"));        String sex = request.getParameter("sex");                UserService  userService = new UserService();        boolean isSuccess = userService.register(username,password,age,sex);        if(isSuccess) {            request.setAttribute("msg", "注册成功,请登录!");            request.getRequestDispatcher("/login.jsp").forward(request, response);        }else {            request.setAttribute("msg", "用户名重复,请重新填写");            request.getRequestDispatcher("/register.jsp").forward(request, response);        }    }}

 

   LoginServlet.java处理用户登录后分用户和管理员操作,用户跳转到首页,管理员则转发到goods_list对商品后台信息进行处理

  GoodsListServlet.java处理转发的goods_list请求

@WebServlet("/admin/goods_list")public class GoodsListServlet extends HttpServlet {        @Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {            doGet(req, resp);    }        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        List
list = new GoodsService().selectAllGoods(); request.setAttribute("list", list); request.getRequestDispatcher("/admin/goods_list.jsp").forward(request, response); }}

 

   goods_list.jsp展示数据库中商品信息列表

 

<%List
list = (List
)request.getAttribute("list");for(Goods goods : list){ %> <%=goods.getName() %><%=goods.getDes() %><%=goods.getPrice() %><%=goods.getInventory() %>删除 修改 <%}%>

 

转载于:https://www.cnblogs.com/1138720556Gary/p/10308338.html

你可能感兴趣的文章
AE待整理
查看>>
java8中规范的四大函数式接口
查看>>
分类---Logistic Regression
查看>>
【bzoj1270】[BeijingWc2008]雷涛的小猫 dp
查看>>
35.Docker安装Mysql挂载Host Volume
查看>>
ring buffer 亲测好用 C++ 11
查看>>
大型网站架构系列:电商网站架构案例(3)
查看>>
java 延时的几种方法方法
查看>>
数据库工具
查看>>
Windows 10 的 cmd 漂亮又实用
查看>>
android Launcher源码解析07:Workspace 02——设置壁纸
查看>>
深入聊聊Java多线程
查看>>
Android Http 下载
查看>>
碰撞器Colider 触发器
查看>>
Golang闭包案例分析与普通函数对比
查看>>
C#文件操作
查看>>
java多线程的三种实现方式
查看>>
【pyhon】理想论坛爬虫1.08
查看>>
T端阵营修改
查看>>
Generative Adversarial Nets[content]
查看>>