注;https://www.cnblogs.com/zhizhiyin/p/11063056.html
一、使用eclipse创建maven web项目
找到maven-archetype-webapp创建即可。web.xml是2.3的,按如下改成2.5。
1. 修改jre
在pom.xml中添加如下代码,项目右键maven Update Project
<build>
<finalName>TestMaven3</finalName>
<plugins>
<!-- 修改maven默认的JRE编译版本,1.8代表JRE编译的版本,根据自己的安装版本选择1.7或1.8 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
build path指定jre
2. web.xml修改为2.5
项目右击Properties
选择Project Facets
(项目模板),如下图,可以看到Dynamic Web Module
版本为 2.3
这里可以先把Dynamic Web Module
勾选去掉,之后Apply。
再接着勾选Dynamic Web Module
,注意下方出现Further configuration available...
选项;接着更改为想要的版本 3.0,点击Further configuration available...
之后,修改 Content director
为src/main/webapp
,勾选Generate web.xml deployment descriptor
OK,保存退出Project Facets
之后修改src/main/webapp/WEB-INF/web.xml
文件,头信息版本修改为 2.5 (或3.0)版本的。
<?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_2_5.xsd"
version="2.5">
</web-app>
之后,项目右击选择Maven Update Project
。
https://blog.csdn.net/qq_16313365/article/details/53783288
https://blog.csdn.net/Peng_Hong_fu/article/details/53584104
二、打包、部署
1. 修改 pom.xml 文件,其中的 packaging 标签值要改成 war
2. 将 jfinal-undertow 和 jetty-server 有关依赖全部删除,否则部署到 tomcat 中会产生冲突
3. 添加 servlet api 依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
这个依赖可以在打包出现提示时再添加,如果打包通过可以不用理会。
4. 控制台 cd 进入项目根目录执行下面命令打出 war 包
mvn clean package
5. 部署 直接将war包放到tomcat的webapp目录下即可访问
三、结合JFinal
1. 打开 pom.xml 文件,在其中添加如下依赖
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal-undertow</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>com.jfinal</groupId>
<artifactId>jfinal</artifactId>
<version>4.9.11</version>
</dependency>
2. 在项目 src/main/java 目录下创建demo包,并在 demo 包下创建 DemoConfig 文件
根据需要建立Controller,可以直接绑定url
3. 在 DemoConfig 类文件上点击鼠标右键,选择 Debug As,再选择 Java Applidation 即可运行
四、添加日志功能
copy jar 包与配置文件
<!-- log4j 日志 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
log4j.properties
# log4j.rootLogger=WARN, stdout, file
log4j.rootLogger=WARN, stdout, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
# Output to the File
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.file.File=./log/word.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%n%-d{yyyy-MM-dd HH:mm:ss}%n[%p]-[Thread: %t]-[%C.%M()]: %m%n
https://jfinal.com/feedback/1187
https://blog.csdn.net/u013870094/article/details/79518028
五、添加jsp支持
<!-- jsp支持 -->
<dependency>
<groupId>io.undertow.jastow</groupId>
<artifactId>jastow</artifactId>
<version>2.1.0.Final</version>
<exclusions>
<!-- 以下两个包跟jfinal-undertow依赖冲突 -->
<exclusion>
<groupId>io.undertow</groupId>
<artifactId>undertow-servlet</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.servlet.jsp</groupId>
<artifactId>jboss-jsp-api_2.3_spec</artifactId>
<version>2.0.0.Final</version>
</dependency>
直接访问 jsp 文件,还需要添加如下配置:
public void configConstant(Constants me) {
me.setDenyAccessJsp(false);
}
@SuppressWarnings("unchecked")
public static void main(String[] args) {
//UndertowServer.start(CommonConfig.class, 80, true);
UndertowServer.create(CommonConfig.class)
.configWeb(wb ->{
wb.getDeploymentInfo().addServlet(JspServletBuilder.createServlet("Default Jsp Servlet","*.jsp"));
HashMap tagLibraryInfo=new HashMap<>();
JspServletBuilder.setupDeployment(wb.getDeploymentInfo(),new HashMap(),
tagLibraryInfo,new HackInstanceManager());
})
.start();
}