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

2 篇文章 0 订阅
2 篇文章 0 订阅
                          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

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值