maven14_idea开发maven项目4

1. idea的maven配置

  idea中操作:File->Settings中配置maven

  

  

2. 使用骨架创建maven的java工程

 打开idea,选择创建一个新工程

  

 选择 idea 提供好的 maven 的骨架,也叫工程模板

  maven-archetype-quickstart:java工程模块,来创建java工程

   

  点击 Next 填写项目信息

  

 点击 Next,此处不做改动。

  

 点击Next,选择项目所在目录

   

 点击 Finish 后开始创建工程,耐心等待,直到出现如下界面。

     

 可以看到:自动生成了一个App类,执行其中的main方法,控制台输出:Hello World!

  

 观察自动生成的目录,目录结构不完整,需要自己手动补齐。

 手动添加src/main/resources目录,如下图右键 main 文件夹->New->Directory

  

  创建一个新的新的目录命名为resources

  

  点击 OK 后,resources并不会被自动识别为资源文件,需要在新的resources文件夹上右键->Make Directory as->Resources Root

    

  测试需要资源文件也需要我们手动添加,右键test文件夹->New->Directory

3. 不使用骨架创建maven的java工程

 打开idea,选择创建一个新工程  

  

 在maven工程中不选择骨架,其他步骤同上面使用骨架的步骤。 

  

  最后工程创建成功,观察使用骨架(左侧图片)跟不使用骨架(右侧图片)创建出来的目录结构不一样

  

  注意:推荐不使用骨架来创建java工程。

4. 使用骨架创建maven的web工程

 打开idea,选择创建一个新工程

  

 选择 idea 提供好的 maven 的骨架,也叫工程模板

  maven-archetype-webapp:web工程模板,来创建web工程

  

  点击 Next 填写项目信息

  

  点击 Next,此处不做改动。

  

  点击 Next 选择项目所在目录

  

 点击 Finish 后开始创建工程,耐心等待,直到出现如下界面。 

  

 手动添加 src/main/java 目录,如下图右键 main 文件夹->New->Directory 

  

 创建一个新的文件夹命名为 java 

  

 点击 OK 后,在新的文件夹 java 上右键->Make Directory as->Sources Root

  

5. servlet实例

 1、指定web资源包

  在web工程中的src/main/webapp目录下创建jsp文件,默认不支持,需要操作如下

    

   Modules->选中maven_web->点击“+”->Web

        

   操作完后发现webapp的图标变化了。

   

   这时,webapp下就能创建jsp文件了。

   

 2、新建servlet

  src/main/java目录下新建包:com.itheima.servlet;

  在servlet包下New->Servlet:MyServlet,创建完后会自动打开webapp->WEB-INF下的web.xml,同时MyServlet报错

   

   

   MyServlet报错是因为缺少servlet相关的依赖包,那么可以使用pom.xml引入,同时也引入jsp依赖包

   

   这种情况是本地仓库有对应的jar包,如果本地仓库没有这些jar包那就只能从网络上搜索下载jar包(百度搜索maven,进入maven仓库地址搜索servlet,选择版本复制坐标到pom.xml中,联网状态下会自动下载jar包到本地仓库)

  实现MyServlet代码

package com.itheima.servlet;

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

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

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("/hello.jsp").forward(request,response);
    }
}

  执行:

      

  执行成功:

   

  访问http://localhost:8080/maven_web/MyServlet报错,同时idea控制台也会报错

   

    

  MyServlet不能被识别为Servlet。  

 3、解决各种执行异常

  a. MyServlet不能被识别为Servlet

   maven有一键构建的功能,一键构建表示不再使用本地安装的tomcat而是使用maven自身集成的tomcat插件对项目进行构建。

   maven自身具有tomcat插件,可能不知道maven集成的tomcat插件在哪儿。但是它既然是tomcat插件,那么tomcat所依赖的包也就是maven tomcat插件中应该有的包。

   我们直接找到本地tomcat就是本地安装的tomcat目录,进入lib目录

    

   lib目录中圈起来的两个jar包就是pom.xml引入的jar包。

   运行项目前出现两套一模一样的包,会导致自己导入的jar包和tomcat中的包相冲突。问题找到了,怎么解决?

   解决办法:自己导入的jar包只想让它在编译的时候起作用,可以对导入的jar包设置作用域。修改pom.xml文件

    

   idea操作停止运行,然后重新执行tomcat:run命令,执行成功后刷新访问http://localhost:8080/maven_web/MyServlet:

    

    因为没有创建hello.jsp,所以hello.jsp找不到。

  b. 找不到hello.jsp异常

   创建hello.jsp文件

    

   刷新访问http://localhost:8080/maven_web/MyServlet:

      

   从截图可以看到使用maven使用的是tomcat6来运行的这个项目,而我在一开始创建项目时使用的是jdk1.8版本,tomcat6是不支持这个版本的jdk的。所以我这里将tomcat设置为tomcat7.0的版本。

  c. jdk和tomcat版本不匹配异常

   第一种方法:jdk1.8换成jdk1.7

   第二种方法:不用maven默认的Tomcat6,改为Tomcat7,方法是在pom.xml文件plugins标签中添加如下子标签

<plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>2.2</version>
</plugin>

   然后,运行命令由Tomcat:run改为Tomcat7:run

   刷新访问http://localhost:8080/maven_web/MyServlet:

    

   另外也要注意,不要执行重复执行tomcat:run命令,否则8080端口号冲突:

    

 4、运行环境修改

  a. 修改tomcat

   方法一:修改pom.xml文件,plugins标签中手动添加如下子标签

        <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.2</version>
          <configuration>
            <port>8888</port>
          </configuration>
        </plugin>

    执行tomcat:run,则使用tomcat6启动成功;执行tomcat7:run,则使用tomcat7启动成功;启动了两个tomcat

    访问http://localhost:8080/maven_web/MyServlet、http://localhost:8888/maven_web/MyServlet可以发现都访问成功

   方法二:File->Settings->Live Templates添加模板

    

    

    

    

    

    然后在pom.xml文件中只要在plugins标签中输入tomcat,出现tomcat7提示后选择tomcat7就会补全方法一中的信息。

   b. 修改jdk

   方法一:修改pom.xml文件,plugins标签中手动添加如下子标签

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <target>1.8</target>
            <source>1.8</source>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>

    target标签:表示所有java代码使用jdk1.8进行编译

    source标签:表示所有class文件使用jdk1.8

    方法二:同tomcat方法二

 5、 maven的Java工程取mysql数据库数据

  a. 插入数据库数据

CREATE DATABASE maven; -- 创建数据库
USE maven;                -- 使用数据库
CREATE TABLE items(   -- 创建表
    id INT PRIMARY KEY AUTO_INCREMENT,
    NAME VARCHAR(20),
    price FLOAT(10,0),
    pic VARCHAR(40),
    createtime DATETIME,
    detail VARCHAR(200)
    
);
-- 插入数据
INSERT INTO items VALUES(NULL,'传智播客',1000,NULL,'2018-03-13 09:29:30','带我走上人生巅峰');
INSERT INTO items VALUES(NULL,'黑马310',NULL,NULL,'2018-03-28 10:05:52','插入测试');
INSERT INTO items VALUES(NULL,'黑马307',199,NULL,'2018-03-07 10:08:04','插入测试');
INSERT INTO items VALUES(NULL,'插入测试',NULL,NULL,NULL,NULL);
INSERT INTO items VALUES(NULL,'插入测试',NULL,NULL,NULL,NULL);

  b. 创建商品类

package com.itheima.domain;

public class Items {

    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Items{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

  c. 创建查询商品接口

package com.itheima.dao;

import com.itheima.domain.Items;

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

public interface ItemsDao {

    public List<Items> findAll() throws Exception;

}

  d. 创建实现类

package com.itheima.dao.impl;

import com.itheima.dao.ItemsDao;
import com.itheima.domain.Items;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * 要想从数据库中取出数据
 * 必须有四个属性:数据库驱动,连接数据库的地址,数据库用户名称,数据库密码
 */
public class ItemsDaoImpl implements ItemsDao {


    public List<Items> findAll() throws Exception {

        ArrayList<Items> list = new ArrayList<Items>();
        //先获取connection对象
        Connection connection = null;
        //获取真正操作数据的对象
        PreparedStatement pst = null;
        //执行数据库查询操作
        ResultSet rs = null;
        try {
            //加载驱动类
            Class.forName("com.mysql.jdbc.Driver");
            connection= DriverManager.getConnection("jdbc:mysql:///maven","root","root");
            pst = connection.prepareCall("select * from items");
            rs = pst.executeQuery();

            //把数据库结果集转成java的list集合
            while (rs.next()){
                Items items = new Items();
                items.setId(rs.getInt("id"));
                items.setName(rs.getString("name"));
                list.add(items);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            connection.close();
            pst.close();
            rs.close();
        }

        return list;
    }
}

  e. 测试类

package com.itheima.test;

import com.itheima.dao.ItemsDao;
import com.itheima.dao.impl.ItemsDaoImpl;
import com.itheima.domain.Items;
import org.junit.Test;

import java.util.List;

public class ItemsTest {

    @Test
    public void findAll() throws Exception {
        ItemsDao itemsDao = new ItemsDaoImpl();
        List<Items> list = itemsDao.findAll();
        for(Items items: list){
            System.out.println(items.getId()+":"+items.getName());
        }
    }
}

   执行完成输出结果

    

 

posted on 2022-05-19 00:14  花溪月影  阅读(71)  评论(0编辑  收藏  举报