文章目录
练习源码
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?
- 理解:限定项目编译检查时最低要求的 JDK 特性
- 参考:idea language level 介绍
scope属性的含义?
- 参与度:编译、测试、运行、打包
- scope属性值:
属性值 | 参与度 |
---|---|
compile | 编译、测试、运行、打包 |
runtime | 测试、运行、打包 |
test | 编译、测试、运行 |
provided | 编译、测试、运行 |
system | 编译、测试、运行,从本地文件系统获取jar包,需要添加systemPath的属性来定义路径 |
IDEA开启Tomcat热部署?
-
概念:热部署就是正在运行状态的应用,修改了他的源码之后,在不重新启动的情况下能够自动把增量内容编译并部署到服务器上,使得修改立即生效。热部署为了解决的问题有两个:
一是在开发的时候,修改代码后不需要重启应用就能看到效果,大大提升开发效率(提升开发效率);
二是生产上运行的程序,可以在不停止运行的情况下进行升级,不影响用户使用(不停服更新)。 -
部署:
必须要选择带有exploded的war包!
debug模式下运行!
问题与错误
子模块无法识别?
- 解决:导入子模块的pom.xml
- 参考:IDEA导入多个maven模块,无法识别子模块
如何启用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>
- 参考:java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/jasper/servlet/J
如何解决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 请求中文乱码问题