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

javaee实验:使用mvc模式 设计一个图书管理系统

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

javaee实验:使用mvc模式 设计一个图书管理系统

太多了把报告粘贴过来了,仅供参考

实习三 EL、JSTL及MVC
一、实习要求与目的
1.掌握标签库的使用
2.掌握EL及JSTL常用标签及方法
3.掌握MVC的编程模式,完成一个完整的信息管理系统
二、实习内容
使用EL、JSTL及MVC完成一个图书管理系统,要求完成图书信息的添加、修改、删除、查询与显示;并添加用户管理功能,只有登录用户才能完成图书的管理操作。
三、扩展
试着使用过滤器作为控制器完成实习内容。

四、实验代码
代码在最下面
工程结构如下图:

这个实验的工程结构中Model是cn.cie.dao和entity包中的dao层和实体类,Controller是一个过滤器和一个Servlet,其中Servlet主要是用作一个中间的统一控制,里面没有代码逻辑,代码逻辑主要都是通过过滤器实现,然后View就是几个jsp页面了。主要思路都比较清晰,其中有些细节需要注意,比如增加记录时id的自动设置等。

六、实验结果
1.登录控制
用户表中有一个用户

还未登录时直接访问/ctrl都会跳转到登录界面要求登录

登录成功后:

和数据库book表中的数据对应的上:

添加数据:

数据表中显示增加一条记录,id顺延:

修改图书信息:
把价格改为99

删除图书:
在图书对应的选项里点击删除选项即可删除图书信息:

数据表中的记录显示已经被删除

代码太多了,又不能直接发文件。。下面只粘控制器和dao层

实在需要的也可以私信找我要工程。。
pom.xml



    4.0.0

    org.example
    shiyan3
    1.0-SNAPSHOT
    war

    
        8
        8
    
    
        
            javax.servlet
            javax.servlet-api
            4.0.0
            provided
        
        
            mysql
            mysql-connector-java
            5.1.46
        
        
            javax.servlet
            jstl
            1.2
        
        
            junit
            junit
            4.13
            test
        
    
    
        
            
                org.eclipse.jetty
                jetty-maven-plugin
                9.2.11.v20150529
                
                    
                        /
                    
                    
                        80
                    
                
            
        


    

MyCtrlFilter.java

package cn.cie.controlles;

import cn.cie.dao.BookDao;
import cn.cie.dao.UserDao;
import cn.cie.entity.Book;
import cn.cie.entity.User;

import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebFilter(filterName = "MyCtrlFilter",urlPatterns ={"/ctrl"})
public class MyCtrlFilter implements Filter {
    public void init(FilterConfig config) throws ServletException {
    }

    public void destroy() {
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {

        HttpServletRequest request1=(HttpServletRequest) request;
        HttpServletResponse response1=(HttpServletResponse) response;


        String user = request.getParameter("user");
        String password = request.getParameter("password");

        String sessionuser=(String) request1.getSession().getAttribute("user");

        UserDao userDao=new UserDao();

        if(user==null)
        {
            if(sessionuser==null)//之前没有登录过
            {
                request1.getSession().setAttribute("err","还未登陆,请登陆");
                response1.sendRedirect("login.jsp");
                return;
            }
        }
        else //从login.jsp访问
        {
            //是否勾选记住密码,写cookie
            String memory=request.getParameter("memory");
            if(memory!=null)
            {
                cookie c1=new cookie("user",user);
                cookie c2=new cookie("password",password);
                response1.addcookie(c1);
                response1.addcookie(c2);
            }
            //判断用户名和密码
            boolean flag=false;
            try {
                List users=userDao.listuser();
                for (User u:users
                     ) {
                    if (u.getUser().equals(user)){
                        if(u.getPassword().equals(password)){   //用户名和密码都正确
                            flag=true;
                            request1.getSession().setAttribute("user",user);
                            break;
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
                request1.setAttribute("errMsg",e.getMessage());
                request1.getRequestDispatcher("error.jsp").forward(request1,response1);
            } 

            if(flag==false)
            {
                request1.getSession().setAttribute("err","用户名或密码错误");
                response1.sendRedirect("login.jsp");
                return;
            }
        }



        String act = request1.getParameter("act");
        BookDao bookDaodao = new BookDao();
        try{
            if("list".equals(act)){
                List books = bookDaodao.list();
                request1.setAttribute("books",books);
                request1.getRequestDispatcher("list.jsp").forward(request1,response1);

            }
            else if("add".equals(act)) {
                request1.getRequestDispatcher("edit.jsp").forward(request1,response1);
            }
            else if("edit".equals(act)) {
                String ids = request1.getParameter("id");
                Integer id = Integer.parseInt(ids);
                Book book = bookDaodao.getById(id);
                request1.setAttribute("book",book);
                request1.getRequestDispatcher("edit.jsp").forward(request1,response1);
            }
            else if("save".equals(act)) {
                String tuh = request1.getParameter("tuh");
                String name = request1.getParameter("name");
                String className = request1.getParameter("book_type");
                String scorces = request1.getParameter("price");
                Float sc = Float.parseFloat(scorces);
                Book book = new Book();
                String id = request1.getParameter("id");
                if(id != null && !"".equals(id)){//id非空是对已存在记录编辑的情况
                    Integer ids = Integer.parseInt(id);
                    book.setId(ids);
                }
                book.settuh(tuh);
                book.setName(name);
                book.setbook_type(className);
                book.setprice(sc);
                bookDaodao.insertOrUpdate(book);
                response1.sendRedirect("ctrl?act=list");
            }
            else if("delete".equals(act)) {
                String ids = request1.getParameter("id");
                Integer id = Integer.parseInt(ids);
                bookDaodao.deleteById(id);
                response1.sendRedirect("ctrl?act=list");
            }
            else {
                throw  new Exception("非法请求!!");
            }
        }
        catch (Exception e){
            e.printStackTrace();
            request1.setAttribute("errMsg",e.getMessage());
            request1.getRequestDispatcher("error.jsp").forward(request1,response1);
        }
        //chain.doFilter(request1, response1);
    }
}

Servlet.java
没啥东西,就是借他的路径中转一下

package cn.cie.controlles;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;

@WebServlet(name = "Servlet", value = "/ctrl")
public class Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

baseDao.java

package cn.cie.dao;

import java.sql.*;

public class baseDao {
    static String driverName = "com.mysql.jdbc.Driver";
    static String url =  "jdbc:mysql://localhost/mvc?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai";
    static String userName = "root";
    static String passwd = "";

    static Connection con = null;

    void getCon() throws ClassNotFoundException, SQLException {//ok
        Class.forName(driverName);
        if(con == null || con.isClosed()){
            con = DriverManager.getConnection(url,userName,passwd);
        }
    }

    protected ResultSet select(String sql) throws SQLException, ClassNotFoundException {//ok
        getCon();
        Statement stat = con.createStatement();
        ResultSet rs = stat.executeQuery(sql);
        return rs;
    }

    protected ResultSet select(String sql, Object[] params) throws SQLException, ClassNotFoundException {//ok
        getCon();
        PreparedStatement pstat = con.prepareStatement(sql);
        for(int i = 1; i <= params.length; i++){
            pstat.setObject(i,params[i - 1]);
        }
        ResultSet rs = pstat.executeQuery();
        return rs;
    }

    protected int save(String sql,Object[] params) throws SQLException, ClassNotFoundException {//ok
        getCon();
        PreparedStatement pstat = con.prepareStatement(sql);
            for(int i = 1; i <= params.length; i++){
                pstat.setObject(i,params[i - 1]);
        }
        int rs = pstat.executeUpdate();
        pstat.close();
        return rs;
    }

    protected int getNewid()throws SQLException, ClassNotFoundException //zijixiede
    {
        getCon();
        Statement stat = con.createStatement();
        ResultSet rs = stat.executeQuery("select  max(id) id from book ");
        if(!rs.next()) return 1;//当前表中没有数据
        return  rs.getInt(1)+1;//取第一列的数据,即最大的id
    }
    void closeCon(){//ok
        try {
            con.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

BookDao.java

package cn.cie.dao;

import cn.cie.entity.Book;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class BookDao extends baseDao {
    static String SELECt = "select * from book";
    static String SELECtBYID = "select * from book where id=?";
    static String INSERT = "insert into book set tuh=?,name=?,book_type=?,price=?,id=?";
    static String UPDATe = "update book set tuh=?,name=?,book_type=?,price=? where id=?";
    static String DELETE = "delete from book where id = ?";

    public List list() throws SQLException, ClassNotFoundException {
        List books = new ArrayList<>();
        ResultSet rs = select(SELECT);

        while (rs.next()){
            Book book = new Book();
            book.setId(rs.getInt("id"));
            book.settuh(rs.getString("tuh"));
            book.setName(rs.getString("name"));
            book.setbook_type(rs.getString("book_type"));
            book.setprice(rs.getFloat("price"));
            books.add(book);
        }
        rs.close();
        return books;
    }

    public void insertOrUpdate(Book book) throws SQLException, ClassNotFoundException {
        Object[] params = new Object[5];
        params[0] = book.gettuh();
        params[1] = book.getName();
        params[2] = book.getbook_type();
        params[3] = book.getprice();
        if(book.getId() == null){//插入的情况,需要加id
            params[4]=Integer.valueOf(getNewid());
            save(INSERT,params);
        }
        else {//更新的情况
            params[4]=book.getId();
            save(UPDATE,params);
        }
    }

    public void deleteById(Integer id) throws SQLException, ClassNotFoundException {
        Object[] params = new Object[1];
        params[0] = id;
        save(DELETE,params);
    }

    public Book getById(Integer id) throws SQLException, ClassNotFoundException {//ok
        Object[] params = new Object[1];
        params[0] = id;
        ResultSet rs = select(SELECTBYID,params);
        rs.next();
        Book book = new Book();
        book.setId(rs.getInt("id"));
        book.settuh(rs.getString("tuh"));
        book.setName(rs.getString("name"));
        book.setbook_type(rs.getString("book_type"));
        book.setprice(rs.getFloat("price"));
        return book;
    }


}

UserDao.java

package cn.cie.dao;

import cn.cie.entity.User;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class UserDao extends baseDao {
    static String SELECTUSER = "select * from usertable";

    public List listuser() throws SQLException, ClassNotFoundException{
        List users = new ArrayList<>();
        ResultSet rs = select(SELECTUSER);

        while (rs.next()){
            User user = new User();
            user.setUser(rs.getString("user"));
            user.setPassword(rs.getString("password"));
            users.add(user);
        }
        rs.close();
        return users;
    }
}

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

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

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