JavaWe商品项目保姆级解析IDEA版(配置篇)

                          JavaWe商品项目保姆级解析IDEA版

首先这里我创建的工程是Maven工程(需要在磁盘中解压MAVEN,然后配置MAVEN的环境变量)
一、 先去maven官网:http://maven.apache.org/download.cgi#下载压缩包,下拉页面可以看到好多版本,注意下载的版本版本后面是带.zip的:apache-maven-3.5.4-bin.zip,点击下载即可。
配置环境变量
一丶右键此电脑,点击属性
在这里插入图片描述

二丶选择高级系统设置
在这里插入图片描述

三丶点击环境变量
在这里插入图片描述

四丶添加一个新的系统变量MAVEN_HOME在这里插入图片描述
变量值是你MAVEN解压的目录

五丶点击新建输入%MAVEN_HOME%\bin
在这里插入图片描述

六丶点击确定后打开cmd,输入svn -v 注:(-v前面有个空格)
在这里插入图片描述
提示JDK版本,环境变量就配置好了

然后我们还需要创建一个文件夹,也就是本地仓库(本地储存jar包的仓库)
D:\Program Files\Maven.m2\repository
我是建立在Maven3.6.3同一级别.m2\repository
1.先创建一个.m2的文件夹
在这里插入图片描述

2.然后在该文件夹中在创建一个repository文件夹

在这里插入图片描述

3.找到settings文件在配置文件中添加本地仓库的地址
apache-maven-3.6.3----->conf----->settings
在图中位置添加
D:\Program Files\Maven.m2\repository
代码注意标签里面的地址一定要是你自己磁盘创建的
在这里插入图片描述

4.找到mirrors标签
在这里插入图片描述

在标签中添加

<id>aliyunmaven</id>

<mirrorOf>*</mirrorOf>

<name>阿里云公共仓库</name>

<url>https://maven.aliyun.com/repository/public</url>
代码 这个是阿里云公共仓库的地址,直接能从国内下载jar包

在IDEA中设置MAVEN
1.File----->Settings----->Build,Execcution,Deployment----->Build Tools----->Maven
在这里插入图片描述

2.设置Maven的地址和继承的本地仓库配置
在这里插入图片描述

3.File----->New Projects Settings----->Settings for new Projects
这里的配置跟上面一样也就是创建一个新的项目时保留该配置

创建IDEA项目
一丶File----->new----->project
在这里插入图片描述
二丶选择Maven模板
在这里插入图片描述

1.选中从原型中构建一个模板
2.选择web模板 然后点击下一步
在这里插入图片描述

点击finish就创建好一个maven项目了

然后我们需要配置pom.xml文件,通过坐标导入javaWeb需要的jar包

Apache Commons BeanUtils » 1.9.4
Apache Commons BeanUtils为反射和自省提供了一个易于使用但灵活的包装器。
<dependency>
  <groupId>commons-beanutils</groupId>
  <artifactId>commons-beanutils</artifactId>
  <version>1.9.4</version>
</dependency>
Servlet的核心依赖包
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>4.0.1</version>
  <scope>provided</scope>
</dependency>
<!--jstljar包,jsp页面上的java操作,前提需要提供javax.servlet-apijar包依赖-->
<dependency>
  <groupId>javax.servlet.jsp.jstl</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>
<!--阿里的连接池-->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.2.4</version>
</dependency>
<!--Oracle驱动坐标,没有该坐标无法连接到oracle数据库,可以通过该驱动操作JDBC 
   https://mvnrepository.com/artifact/com.oracle.database.jdbc/ojdbc8 -->
<dependency>
  <groupId>com.oracle.database.jdbc</groupId>
  <artifactId>ojdbc8</artifactId>
  <version>19.8.0.0</version>
</dependency>
<!--C3p0连接池的坐标-->
<dependency>
  <groupId>be.yildiz-games</groupId>
  <artifactId>module-database-pool-c3p0</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>
<!--解决数据库中文乱码问题:不支持的字符集,不支持的字符集合-->
<!-- https://mvnrepository.com/artifact/cn.easyproject/orai18n -->
<dependency>
  <groupId>cn.easyproject</groupId>
  <artifactId>orai18n</artifactId>
  <version>12.1.0.2.0</version>
</dependency>

配置好之后我们需要点击图中的符号刷新or下载 jar包

导入了web作业需要的jar后然后我们来配置一下Tomcat
1.选择Add Configuration
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201221161512526.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L015QXpoZTBjaTM=,size_16,color_FFFFFF,t_70

2.点击+号添加一个新的配置
在这里插入图片描述

3.选择本地的tomcat
在这里插入图片描述

4.选择本地tomcat目录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.配置好tomcat后我们就需要将web项目部署到tomcat中
在这里插入图片描述

点击+号
在这里插入图片描述

6.部署完之后在server中选择需要的配置,下面我会介绍一下

在这里插入图片描述

选择JDK的安装路径
在这里插入图片描述

在这里插入图片描述

注意 要选择应用Apply后点击OK,这样我们的tomcat就配置完了

然后我们就可以开始写代码了
首先看一下项目结构

在这里插入图片描述

一丶根据数据库创建实体类因为功能一是登录,所以我们先创建一个Users类
在这里插入图片描述

二丶创建一个连接数据库的工具类DBUtil
在这里插入图片描述
在这里插入图片描述
三丶创建一个通用的增删改查的通用工具类JdbcTemplate
这里直接贴代码

ackage util;

import dao.mapper.Mapper;

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

public class JdbcTemplate {

    private Connection conn=null;
    private ResultSet rs=null;
    private PreparedStatement ps=null;
     //通用查询总记录

    // 通用的查询总记录  这里是网页上分页的时需要调用的方法
    public Integer count(String sql, Object... params) throws  SQLException{
        try {
            conn = DBUtil.getConnection();
            ps = conn.prepareStatement(sql);

            // 设置参数
            if (params != null) {
                for (int i = 0; i < params.length; i++) {
                    ps.setObject(i + 1, params[i]);
                }
            }

            rs = ps.executeQuery();

            if (rs.next()) {
                return rs.getInt(1);
            }

        } catch (SQLException e) {
            throw new RuntimeException(e.getMessage());
        } finally {
            DBUtil.closeAll(rs, ps, conn);
        }

        return null;
    }

    // 通用的修改(添加、删除、修改)
    public boolean update(String sql, Object... params) throws SQLException {
        boolean flag = false;
        try {
            conn = DBUtil.getConnection();
            ps = conn.prepareStatement(sql);

            // 设置参数
            if (params != null) {
                for (int i = 0; i < params.length; i++) {
                    ps.setObject(i + 1, params[i]);
                }
            }

            int rows = ps.executeUpdate();

            if (rows > 0) {
                flag = true;
            }

        } catch (SQLException e) {
            throw new RuntimeException(e.getMessage());
        } finally {
            DBUtil.closeAll(rs, ps, conn);
        }

        return flag;
    }

    // 通用的查询单个对象
    public <T> T selectForObject(String sql, Mapper<T> mapper, Object... params) throws  SQLException{
        T t = null;
        try {
            conn = DBUtil.getConnection();
            ps = conn.prepareStatement(sql);
            if (params != null) {
                for (int i = 0; i < params.length; i++) {
                    ps.setObject(i + 1, params[i]);
                }
            }

            rs = ps.executeQuery();

            while (rs.next()) {
                t = mapper.mapperRow(rs);
            }

        } catch (SQLException e) {
            throw new RuntimeException(e.getMessage());
        } finally {
            DBUtil.closeAll(rs, ps, conn);
        }

        return t;
    }

    // 通用的查询所有对象
    public <T> List<T> selectList(String sql, Mapper<T> mapper,
                                  Object... params) throws SQLException {
        List<T> list = new ArrayList<>();

        try {
            conn = DBUtil.getConnection();

            ps = conn.prepareStatement(sql);

            if (params != null) {

                for (int i = 0; i < params.length; i++) {
                    System.out.println(3);
                    ps.setObject(i + 1, params[i]);
                }
            }

            rs = ps.executeQuery();

            while (rs.next()) {
                T t = mapper.mapperRow(rs);
                list.add(t);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e.getMessage());
        } finally {
            DBUtil.closeAll(rs, ps, conn);
        }

        return list;
    }

}

四丶然后我们还需要一个工厂模式(一、工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。)

在这里插入图片描述
1.通过静态代码块加载工厂类需要用到的属性配置文件
2.工厂类需要一个能够创建自身实例的方法
创建对象的前提条件是必须要调用构造方法(不管是有参还是无参)
但是工厂类他的构造方法是私有的,那么我们无法调用构造方法,也就无法执行工厂
类的中方法,所以我们就需要这么一个能够创建工厂类自身实例的方法
3.重中之重 仔细看
在这里插入图片描述
4.工厂模式就是为了解决代码的耦合性问题,也就是解耦,多例模式,每一次调用都需要重新创建一个新的对象地址,而单例模式就是在内存中开辟一个实例对象,以后每次都调用这个对象,大大提高了代码的效率
5.其次,工厂模式可以降低代码重复。如果创建对象B的过程都很复杂,需要一定的代码量,而且很多地方都要用到,那么就会有很多的重复代码。我们可以这些创建对象B的代码放到工厂里统一管理。既减少了重复代码,也方便以后对B的创建过程的修改维护。

在这里插入图片描述

五丶接下来我们就可以写用户的Dao层了
1.首先我们要定义一个UsersDao接口
在这里插入图片描述
2.在实现层impl中创建一个UsersDaoImpl实现类
在这里插入图片描述
3.由于在网页上我们要隐藏dao层是怎么实现增删改查的,所以在这里 我们要加一个业务层
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六丶然后我们就可以开始写Servlet了
1.我们要定义一个通用的servlet方便让别人继承,提高代码的重用性,去除冗余的代码
2.需要获取网页传来的参数action(action的值就是方法名)
3.这里需要通过反射去调用子类中的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到此为止登录的功能就完成了

登录之后我们就可以写主页面的商品分页显示+高级查询
一.我们需要一个分页的工具类
在这里插入图片描述

在这里插入图片描述

然后我们需要写product实体类以及ProductDao接口以及实现类+业务层
第一步:写一个product实现类
在这里插入图片描述
第二步:写一个ProductDao接口 在接口中添加一个分页以及高级查询的方法
在这里插入图片描述

第三步:写一个ProductDaoImpl实现类,创建通用模板类对象,并实现分页方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第四步:业务层的操作
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
第五步:jsp页面以及ProductServlet操作
1.从index.jSP网页跳转到productServlet
在这里插入图片描述
2.通过工厂创建业务层实例对象
1.创建数据传输对象
2.通过apache封装的自省和反射框架获取网页请求传输过来的所有参数
3.设置默认页码为第一页,并且设置页显示数据
4.获取会话session储存的当前页,如果不为空,则覆盖之前的默认页
5.调用业务层查询分页+高级查询的方法,将当前页码+页显示数据以及dto数据传输 对象传进去
6.传入dto获取总共多少商品数据
7.设置分页工具类
8.将dto存入session 方便网页刷新时文本框的条件刷新消息(不符合逻辑)
9.将分页类对象存入会话,便于上一页下一页…等操作
10.跳转到显示数据的网页
在这里插入图片描述

3.show.jsp操作
1.导入jstl核心标签库
在这里插入图片描述
2.设置好dto的条件,并将值都设置为会话储存的dto
在这里插入图片描述
3.数据显示及分页操作
在这里插入图片描述

Ok到了这里分页就做完了 点个关注吧 谢谢!! 交流加Q1760388399

评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值