JavaWeb_(MVC)管理员后台商品查询demo

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<String , User> userMap = new HashMap<String , User>();
    public static List<Goods> goodsList = new ArrayList<Goods>();

    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<Goods> 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", "<font color=‘red‘>用户名或密码错误,请重新登录!</font>");
            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", "<font color=‘green‘>注册成功,请登录!</font>");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }else {
            request.setAttribute("msg", "<font color=‘red‘>用户名重复,请重新填写</font>");
            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<Goods> 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<Goods> 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<String , User> userMap = new HashMap<String , User>();
    public static List<Goods> goodsList = new ArrayList<Goods>();

    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"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<style type="text/css">
*{
    font-size = 20px;
}
</style>
</head>
<body>

<h1>商品管理</h1>
</hr>
<a>添加</a>
<table border = "1">
<tr>
<td>商品名</td><td>描述</td><td>价格</td><td>库存</td><td>操作</td>
</tr>

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

<!-- <tr> -->
<!--     <td>香蕉</td><td>这个是香蕉</td><td>78</td><td>500</td><td>删除 修改</td> -->
<!-- </tr> -->

</body>
</html>

goods_list.jsp

首页面

<%@ page import="com.Gary.model.User" %>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>

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

<body>

</br>
各种商品的展示
</body>
</html>

index.jsp

用户登录页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>

<%
if(request.getAttribute("msg")!=null)
    out.println(request.getAttribute("msg")+"<br/>");
%>

登录
<hr/>
<form action="<%=request.getContextPath() %>/login_do" method="post">
用户名:<input type="text" name="username" /><br/>
密码:<input type="password" name="password" /><br/>
<input type="submit" value="登录" />
</form>

</body>
</html>

login.jsp

用户注册页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>

<%
if(request.getAttribute("msg")!=null)
    out.println(request.getAttribute("msg")+"<br/>");
%>

注册
<hr/>
<form action="<%=request.getContextPath() %>/register_do" method="post">
用户名:<input type="text" name="username" /><br/>
密码:<input type="password" name="password" /><br/>
年龄:<input type="text" name="age" /><br/>
性别: 男<input type="radio" name="sex" value="男" checked="checked"/>女<input type="radio" name="sex" value="女" /><br/>
<input type="submit" value="注册" />
</form>

</body>
</html>

register.jsp

实现过程

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

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

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

<form action="<%=request.getContextPath() %>/register_do" method="post">
用户名:<input type="text" name="username" /><br/>
密码:<input type="password" name="password" /><br/>
年龄:<input type="text" name="age" /><br/>
性别: 男<input type="radio" name="sex" value="男" checked="checked"/>女<input type="radio" name="sex" value="女" /><br/>
<input type="submit" value="注册" />
</form>

  创建用户数据模型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<String , User> userMap = new HashMap<String , User>();
    public static List<Goods> goodsList = new ArrayList<Goods>();

    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<Goods> 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", "<font color=‘green‘>注册成功,请登录!</font>");
            request.getRequestDispatcher("/login.jsp").forward(request, response);
        }else {
            request.setAttribute("msg", "<font color=‘red‘>用户名重复,请重新填写</font>");
            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<Goods> list = new GoodsService().selectAllGoods();
        request.setAttribute("list", list);
        request.getRequestDispatcher("/admin/goods_list.jsp").forward(request, response);
    }

}

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

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

<!-- <tr> -->
<!--     <td>香蕉</td><td>这个是香蕉</td><td>78</td><td>500</td><td>删除 修改</td> -->
<!-- </tr> -->

原文地址:https://www.cnblogs.com/1138720556Gary/p/10308338.html

时间: 2024-08-26 15:14:10

JavaWeb_(MVC)管理员后台商品查询demo的相关文章

Spring MVC +MyBatis +MySQL 登录查询Demo 解决了mybatis异常【转】

1.整体结构 2.准备工作 数据库: --Mysql 5.6 创建数据库 wolf 1 CREATE DATABASE wolf; 创建用户表 user 1 2 3 4 5 6 create table user( id int  AUTO_INCREMENT  primary key, name varchar(25) not null, pwd varchar(20) not null, create_time date ) 向表中插入测试数据 1 2 3 4 insert into use

后台商品管理功能实现

1 课前知识回顾 1.1 监听器的方式 1.1.1 配置文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http:/

Spring MVC +MyBatis +MySQL 简单的登录查询 Demo 解决了mybatis异常

忙活了大半天,饭也没顾得上吃,哎许久不动手,一动手就出事,下面请看今天的重头戏,额吃个饭回来再发了! 1.整体结构 2.准备工作 数据库: --Mysql 5.6 创建数据库 wolf CREATE DATABASE wolf; 创建用户表 user create table user( id int  AUTO_INCREMENT  primary key, name varchar(25) not null, pwd varchar(20) not null, create_time dat

购物商场--前台系统与后台商品管理系统 (需求与表分析)

前台系统-- 购物商场1.购物首页查询商品分类及商品信息2.注册3.登陆4.个人资料修改5.修改密码6.充值.提现7.加入购物车8.付款生成订单 后台管理系统--- 购物商城商品管理系统1.分类管理: 增删查改2.商品管理: 新增.下架,上架,修改库存,修改单价, 商品编辑, 商品查询 3.统计 一周内销售额 一月内销售额 表分析:管理员表(编号,用户名,密码)商品分类(编号,分类名称,上级分类编号)商品表(商品编号.商品分类编号, 商品名称,商品参考价,商品售价, 商品折扣价, 商品数量,商品

ASP.NET MVC+JQueryEasyUI1.4+ADO.NET Demo

1.JQueryEasyUI使用 JQuery EasyUI中文官网:http://www.jeasyui.net/ JQuery EasyUI中文官网下载地址:http://www.jeasyui.net/download/ jQuery EasyUI 1.4 版 API 中文版: 链接:http://pan.baidu.com/s/1c1pAutE%20 密码:0mk8 JQuery EasyUI 1.4.4 百度云盘:链接:http://pan.baidu.com/s/1bnRpH3T 密

spring MVC入门示例(hello world demo)

1. Spring MVC介绍 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框 架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的. Spring Web MVC也是服务到工作者模式的实现,但进行可优化.前端控制器是DispatcherServlet:应用控制器其实拆为处理器映射器(Handler M

使用TT模板+mvc+wcf实现简单查询

伴随着春姑娘调皮的脚步,小编接手的档案管理项目也渐渐步入正轨,从开始的需求分析,到使用Axure画原型图,再到使用powerdesigner设计实体,生成数据库,一直到昨天刚刚通了一条线,这一路走来,小编懂得了很多,无路学习还是和团队小伙伴的交流合作,有时候,总是会因为大家意见不统一,搞的大家吹胡子瞪眼,但有时也会因为某件事情圆满成功而欢欣鼓舞,小组中最开心的事儿莫过于有人开会迟到买吃的了,哈哈,暴露了小编的本质,开头说了这么多,接下来,小编就跟分享一下,如果利用TT模板+mvc+wcf实现简单

第一篇:无角牛MVC通用后台数据库设计

v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 false 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable {

MVC 从后台页面 取前台页面传递过来的值的几种取法

MVC 从后台页面 取前台页面传递过来的值的几种取法 <1>前台页面 Index视图 注意:用户名表单的name值为txtName 密码表单的name值为txtPassword 1 <html> 2 <head> 3 <meta name="viewport" content="width=device-width" /> 4 <title>Test</title> 5 </head>