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

javaweb学习 使用javaweb的MVC架构实现增删改查

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

javaweb学习 使用javaweb的MVC架构实现增删改查

我们之前3月一直在做spring全家桶范围的项目测试和开发,4月我们将缓存,java多线程,安全框架进行了系列的学习,对于这个项目测试尽管工作量是一个人完成的小型学习与练习式测试,但是我们对于基本的jdbc的API实现的数据层操作与javaweb的Servlet配置与写法也更加熟悉,同时做完这个javaweb的项目开发,我也深刻的理解到自从spring框架来临的时候,广大程序员们精神上的解放。

开发步骤:

1、导入需要的依赖

2、手写一个封装好的JDBC工具包,让我们能够直接调用相应的api实现数据库操作

3、设计实体类

4、设计dao层与其实现类

5、设计各个业务的servlet类

6、配置servlet和filter过滤器解决前后端数据流动期间的中文乱码问题

1、导入需要的依赖

    
      javax.servlet
      servlet-api
      2.5
    
    
      javax.servlet.jsp
      jsp-api
      2.2
    
    
      com.mchange
      c3p0
      0.9.5.2
    
    
      javax.servlet
      jstl
      1.2
    
    
      mysql
      mysql-connector-java
      8.0.28
    
    
      org.projectlombok
      lombok
      1.18.24
    

2、手写一个封装好的JDBC工具包,让我们能够直接调用相应的api实现数据库操作

public class JDBC {

   static String driver = "com.mysql.cj.jdbc.Driver";
   static String url = "jdbc:mysql://localhost:3306/test";
   static String username = "root";
   static String password = "123456";
   static Connection connection = null;

    public static void init() throws Exception{
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(driver);
        dataSource.setJdbcUrl(url);
        dataSource.setUser(username);
        dataSource.setPassword(password);
        connection = dataSource.getConnection();
    }

    public static ResultSet select(String sql) throws Exception{
        PreparedStatement ps = connection.prepareStatement(sql);
        ResultSet resultSet = ps.executeQuery(sql);
        return resultSet;
    }

    public static  int update(String sql) throws Exception{
        int i = 0;
        PreparedStatement ps = connection.prepareStatement(sql);
        i = ps.executeUpdate();
        return i;
    }

    public static  void shutCon()throws Exception{
        connection.close();
    }
}

3、设计实体类

@Data
public class User {
    private String name;
    private int age;
}

4、设计dao层与其实现类

public interface UserDao {
    List findAll() throws Exception;
    Boolean login(String name,int age) throws Exception;
    Boolean delete(String name) throws Exception;
    Boolean save(User user) throws Exception;
}


public class UserDaoImpl implements UserDao{
    public List findAll() throws Exception {
        JDBC.init();
        ResultSet resultSet = JDBC.select("select * from user");
        List userList = (List) resultSet;
        JDBC.shutCon();
        return userList;
    }

    public Boolean login(String name, int age) throws Exception {
        JDBC.init();
        ResultSet resultSet = JDBC.select("select * from user where name='" + name + "' and age='" + age + "'");
        JDBC.shutCon();
        return resultSet==null ? false : true;
    }

    public Boolean delete(String name) throws Exception {
        JDBC.init();
        int i = JDBC.update("delete from user where name='" + name + "' ");
        JDBC.shutCon();
        return i==0?false:true;
    }

    public Boolean save(User user) throws Exception {
        JDBC.init();
        int i = JDBC.update("insert into user values('" + user.getName() + "','" + user.getAge() + "')");
        JDBC.shutCon();
        return i==0?false:true;
    }
}

5、设计各个业务的servlet类

登录:

public class login extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @SneakyThrows
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        int age = Integer.parseInt(req.getParameter("age"));

        UserDao userDao = new UserDaoImpl();
        if(userDao.login(name,age)){
            
            req.getRequestDispatcher("/success.jsp").forward(req,resp);
        }else {
            
            resp.sendRedirect("index.jsp");
        }

    }
}

注册:

public class save extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    @SneakyThrows
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        User user = new User();
        user.setName(request.getParameter("name"));
        user.setAge(Integer.parseInt(request.getParameter("age")));

        UserDao userDao = new UserDaoImpl();
        Boolean save = userDao.save(user);
        if (save){
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }else {
            response.sendRedirect("error.jsp");
        }

    }
}

删除:

public class delete extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @SneakyThrows
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String name = request.getParameter("name");
        UserDao userDao = new UserDaoImpl();
        Boolean delete = userDao.delete(name);
        if (delete){
            request.getRequestDispatcher("/List.jsp").forward(request,response);
        }else{
            response.sendRedirect("delete.jsp");
        }
    }
}

展示全部:

public class allList extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    @SneakyThrows
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        UserDao userDao = new UserDaoImpl();
        List userList = userDao.findAll();
        request.setAttribute("userList",userList);
    }
}

6、配置servlet和filter过滤器解决前后端数据流动期间的中文乱码问题

web.xml文件配置:

 
        filter
        com.javaweb.untils.filter
    
    
        filter
        /*
    


    
        allList
        com.javaweb.web.allList
    
    
        allList
        /allList
    

    
        delete
        com.javaweb.web.delete
    
    
        delete
        /delete
    

    
        save
        com.javaweb.web.save
    
    
        save
        /save
    

    
        login
        com.javaweb.web.login
    
    
        login
        /login
    

乱码解决:配置filter类

public class filter implements Filter {
    public void destroy() {
        System.out.println("过滤器销毁");
    }

    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("过滤器初始化");
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        //1.解决response输出流的乱码问题
        req.setCharacterEncoding("utf-8");
        //2.解决post请求中的中文信息乱码问题
        //2.1 设置获取流的编码格式
        resp.setCharacterEncoding("utf-8");
        //2.2 告知浏览器我们输出的文件类型以及编码格式
        resp.setContentType("text/html;utf-8");
        chain.doFilter(req, resp);
    }

}

至于前端页面大家自己按照我的api配吧!这个月努力学习数据结构与算法以及我没有学完的jvm。感觉工作压力挺大的,因为我不知道到底要学到什么程度才能参加工作,虽然java方面开发以及解决问题已经熟练了,但是还是觉得不够,还需要沉淀。

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

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

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