IDEA创建maven工程知识点与问题总结


练习源码

IDEA创建maven工程知识点与问题总结

知识总结

推荐环境

  • jdk-1.7
  • Intellij IDEA 2019.3
  • apache-tomcat-7.2.2
  • apache-maven-3.6.3

坐标网址

查看坐标网址

模板与工程类型的对应关系?

模板 项目类型
maven-archetype-quickstart jar项目
maven-archetype-webapp web/war项目
maven-archetype-site 聚合/父项目

什么是language level?

scope属性的含义?

  • 参与度:编译、测试、运行、打包
  • scope属性值
属性值 参与度
compile 编译、测试、运行、打包
runtime 测试、运行、打包
test 编译、测试、运行
provided 编译、测试、运行
system 编译、测试、运行,从本地文件系统获取jar包,需要添加systemPath的属性来定义路径

参考maven 细节 —— scope、坐标

IDEA开启Tomcat热部署?

  • 概念:热部署就是正在运行状态的应用,修改了他的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效。热部署为了解决的问题有两个:
    一是在开发的时候,修改代码后不需要重启应用就能看到效果,大大提升开发效率(提升开发效率);
    二是生产上运行的程序,可以在不停止运行的情况下进行升级,不影响用户使用(不停服更新)。

  • 部署
    在这里插入图片描述
    必须要选择带有exploded的war包!
    在这里插入图片描述debug模式下运行!

  • 参考
    Idea配置热部署
    idea热部署且开启自动编译

问题与错误

子模块无法识别?

如何启用EL表达式?

  • 解决

step1: 添加standard和jstl的坐标
step2: 两种方法,推荐m1

m1: 修改web.xml文件的命名空间为

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    
</web-app>

m2: 在jsp页面中启用EL表达式

<%@ page isELIgnored="false" %>

整合ssm时出现mybatis接口绑定错误?

  • 错误内容:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
  • 原因分析:maven默认只把src/main/resources里面的非.java文件进行编译到classes中,如果希望src/main/java下的文件也被编辑到classes中,在pom.xml中配置。
  • 解决
    在父项目pom.xml中配置资源拷贝插件:
<build>
    <!--配置资源拷贝插件-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>
</build>

服务器运行成功,但访问时出现加载程序约束冲突?

  • 错误内容: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/jasper/servlet/JasperLoader) previously initiated loading for a different type with name “javax/servlet/http/HttpServletRequest”
  • 原因分析:servlet包加载时出现冲突,servlet包不应该被打包进项目。
  • 解决:在servlet和jsp坐标加上scope约束:
      <scope>provided</scope>

如何解决maven自带tomcat服务器get请求中文乱码问题?

  • 错误内容:在servlet中设置请求编码格式req.setCharacterEncoding(“utf-8”),get请求仍然出现中文乱码。
  • 原因分析:get请求中文乱码的解决还需要在tomcat的目录下的conf目录中修改server.xml文件:在Connector标签中增加属性 useBodyEncodingForURI=“true”,maven自带tomcat服务器没有server.xml文件,因此要到相应的pom.xml文件中去配置。
  • 解决:在项目pom.xml配置tomcat插件的地方设置编码:
    在这里插入图片描述
  • 参考在使用 maven 集成的 tomcat 时解决get 请求中文乱码问题

猜你喜欢

转载自blog.csdn.net/ChenTianyu666/article/details/105053754
今日推荐