栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

书城项目03

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

书城项目03

1.对JSP页面作抽取优化

2.对登录预注册的Servlet类作优化处理

在jsp页面中添加隐藏域,利用反射动态的获取action的值,以此来确定需要执行的方法

package com.atguigu.web;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;

public abstract class baseServlet extends HttpServlet {

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String action = req.getParameter("action");
        try {
            // 获取action业务鉴别字符串,获取相应的业务 方法反射对象
            Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class, HttpServletResponse.class);
//            System.out.println(method);
            // 调用目标业务 方法
            method.invoke(this, req, resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }
}
package com.atguigu.web;

import com.atguigu.pojo.User;
import com.atguigu.service.UserService;
import com.atguigu.service.impl.UserServiceImpl;
import com.atguigu.utils.WebUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class UserServlet extends baseServlet {

    private UserService userService = new UserServiceImpl();

    
    protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //  1、获取请求的参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        // 调用 userService.login()登录处理业务
        User loginUser = userService.login(new User(null, username, password, null));
        // 如果等于null,说明登录 失败!
        if (loginUser == null) {
            // 把错误信息,和回显的表单项信息,保存到Request域中
            req.setAttribute("msg", "用户或密码错误!");
            req.setAttribute("username", username);
            //   跳回登录页面
            req.getRequestDispatcher("/pages/user/login.jsp").forward(req, resp);
        } else {
            // 登录 成功
            //跳到成功页面login_success.html
            req.getRequestDispatcher("/pages/user/login_success.jsp").forward(req, resp);
        }

    }

    
    protected void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //  1、获取请求的参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String email = req.getParameter("email");
        String code = req.getParameter("code");

        User user = WebUtils.copyParamToBean(req.getParameterMap(), new User());

//        2、检查 验证码是否正确  === 写死,要求验证码为:abcde
        if ("abcde".equalsIgnoreCase(code)) {
//        3、检查 用户名是否可用
            if (userService.existsUsername(username)) {
                System.out.println("用户名[" + username + "]已存在!");

                // 把回显信息,保存到Request域中
                req.setAttribute("msg", "用户名已存在!!");
                req.setAttribute("username", username);
                req.setAttribute("email", email);

//        跳回注册页面
                req.getRequestDispatcher("/pages/user/regist.jsp").forward(req, resp);
            } else {
                //      可用
//                调用Sservice保存到数据库
                userService.registUser(new User(null, username, password, email));
//
//        跳到注册成功页面 regist_success.jsp
                req.getRequestDispatcher("/pages/user/regist_success.jsp").forward(req, resp);
            }
        } else {
            // 把回显信息,保存到Request域中
            req.setAttribute("msg", "验证码错误!!");
            req.setAttribute("username", username);
            req.setAttribute("email", email);

            System.out.println("验证码[" + code + "]错误");
            req.getRequestDispatcher("/pages/user/regist.jsp").forward(req, resp);
        }

    }


}

3.对后台管理的图书管理模块进行编写

BookDao接口与BookDaoImpl类的编写

在这里需要注意的是在查询操作编写sql语句时一定需要查询图书的id,不然会导致后续的操作

package com.atguigu.dao;

import com.atguigu.pojo.Book;

import java.util.List;


public interface BookDao {
    //添加图书
    public int addBook(Book book);
    //删除图书
    public int deleteBookById(Integer id);
    //更改图书
    public int updateBook(Book book);
    //查询单本图书
    public Book queryBookById(Integer id);
    //查询全部图书
    public List queryBooks();
}
package com.atguigu.dao.impl;

import com.atguigu.dao.BookDao;
import com.atguigu.pojo.Book;

import java.util.List;


public class BookDaoImpl extends baseDao implements BookDao {
    @Override
    public int addBook(Book book) {
        String sql = "insert into t_book(`name`,`author`,`price`,`sales`,`stock`,`img_path`)values(?,?,?,?,?,?)";
        return update(sql,book.getName(),book.getAuthor(),book.getPrice(),book.getSales(),book.getStock(),book.getImgpath());
    }

    @Override
    public int deleteBookById(Integer id) {
        String sql = "delete from t_book where id = ?";
        return update(sql,id);
    }

    @Override
    public int updateBook(Book book) {
        String sql = "update t_book set `name`=?,`author`=?,`price`=?,`sales`=?,`stock`=?,`img_path`=? where id = ?";
        return update(sql,book.getName(),book.getAuthor(),book.getPrice(),book.getSales(),book.getStock(),book.getImgpath(),book.getId());
    }

    @Override
    public Book queryBookById(Integer id) {
        String sql = "select `id`,`name`,`author`,`price`,`sales`,`stock`,`img_path` from t_book where id = ?";
        return queryForOne(Book.class,sql,id);
    }

    @Override
    public List queryBooks() {
        String sql = "select `id`,`name`,`author`,`price`,`sales`,`stock`,`img_path` from t_book";
        return queryForList(Book.class,sql);
    }
}

BookService接口与BookServiceImpl类的编写

package com.atguigu.service;

import com.atguigu.pojo.Book;

import java.util.List;


public interface BookService {
    public int addBook(Book book);
    public int deleteBookById(Integer id);
    public int updateBook(Book book);
    public Book queryBookById(Integer id);
    public List queryBooks();
}
package com.atguigu.service.impl;

import com.atguigu.dao.BookDao;
import com.atguigu.dao.impl.baseDao;
import com.atguigu.dao.impl.BookDaoImpl;
import com.atguigu.pojo.Book;
import com.atguigu.service.BookService;

import java.util.List;


public class BookServiceImpl extends baseDao implements BookService {
    BookDao bookDao = new BookDaoImpl();
    @Override
    public int addBook(Book book) {
        return bookDao.addBook(book);
    }

    @Override
    public int deleteBookById(Integer id) {
        return bookDao.deleteBookById(id);
    }

    @Override
    public int updateBook(Book book) {
        return bookDao.updateBook(book);
    }

    @Override
    public Book queryBookById(Integer id) {
        return bookDao.queryBookById(id);
    }

    @Override
    public List queryBooks() {
        return bookDao.queryBooks();
    }
}

编写BookServlet

在执行添加和修改时,都会跳转到同一个页面,而在修改跳转页面时会将图书的数据送过去。

同时也需要在修改页面添加上id的隐藏域

package com.atguigu.web;

import com.atguigu.pojo.Book;
import com.atguigu.service.BookService;
import com.atguigu.service.UserService;
import com.atguigu.service.impl.BookServiceImpl;
import com.atguigu.utils.WebUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;



public class BookServlet extends baseServlet {
    private BookService bookService = new BookServiceImpl();

    protected void add (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
        //获取参数
        Book book = WebUtils.copyParamToBean(req.getParameterMap(), new Book());
        //添加
        bookService.addBook(book);
        //重定向两次请求
        //不使用跳转的原因是可能会导致图书重复添加
        resp.sendRedirect(req.getContextPath()+"/host/bookServlet?action=list");
    }

    protected void delete (HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
        //获取参数
        String id1 = req.getParameter("id");
        int id = WebUtils.parseInt(id1, 0);
        //删除
        bookService.deleteBookById(id);
        //重定向到图书展示页面
        resp.sendRedirect(req.getContextPath()+"/host/bookServlet?action=list");
    }

    protected void getBook(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取参数
        int id = WebUtils.parseInt(req.getParameter("id"),0);
        //查询图书
        Book book = bookService.queryBookById(id);
        //保存图书
        req.setAttribute("book",book);
        System.out.println(book);
        //跳转
        req.getRequestDispatcher("/pages/host/book_edit.jsp").forward(req,resp);
    }

    protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取参数
        Book book = WebUtils.copyParamToBean(req.getParameterMap(),new Book());
        System.out.println(book);
        //修改
        bookService.updateBook(book);
        //重定向
        resp.sendRedirect(req.getContextPath() + "/host/bookServlet?action=list");
    }

    protected void list(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //查询全部图书
        List books = bookService.queryBooks();
        //保存到request域中
        req.setAttribute("books",books);
        //跳转到图书展示页面
        req.getRequestDispatcher("/pages/host/book_manager.jsp").forward(req,resp);
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>




编辑图书

	<%-- 静态包含 base标签、css样式、jQuery文件 --%>
	<%@ include file="/pages/common/head.jsp"%>


	
	h1 {
		text-align: center;
		margin-top: 200px;
	}
	
	h1 a {
		color:red;
	}
	
	input {
		text-align: center;
	}



执行什么操作?${empty requestScope.book}
		
			
			编辑图书

			<%-- 静态包含 manager管理模块的菜单  --%>
			<%@include file="/pages/common/manager_menu.jsp"%>


		

		
			
名称 价格 作者 销量 库存 操作
<%--静态包含页脚内容--%> <%@include file="/pages/common/footer.jsp"%>

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644542.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号