工具组件——IDEA创建maven工程知识点与问题总结


练习源码

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

知识总结

推荐环境
  • jdk-1.7
  • Intellij IDEA 2019.3
  • apache-tomcat-7.2.2
  • apache-maven-3.6.3
坐标网址

查看坐标网址

模板与工程类型的对应关系?
模板项目类型
maven-archetype-quickstartjar项目
maven-archetype-webappweb/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 请求中文乱码问题
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值