最近在学习javaweb的时候,使用ecplise加maven的方式创建web项目,途中遇到了很多的坑,现在来总结一下,这里的要求是安装好了maven,配置好了tomcat,相关的文章很多,这里就不再复述了,总之可以在命令行使用javac和mvn -version两个命令就可以算是配置好了。同时,我们要记得关联我们的tomcat和maven,我们去修改我们的tomcat的conf文件夹里面的tomcat-users.xml文件,在里面添加一个用户,再把这个用户绑定到maven里面去。
在tomcat的tomcat-users文件的tomcat-users属性下添加
然后我们去修改我们maven的setting.xml文件。这个文件在我们根目录的.m2文件夹那里,如果没有,我们就复制一个到那里去,然后再那里修改,这样会比较的好。
在server那里添加一个server
tomcat
tomcat
123456
随后我们要给我们的eclipse安装tomcat插件,具体百度,反正eclipse上有个猫就好了
正题~
我们首先打开eclipse去创建一个maven的web项目
我们在file->new->maven project里面创建一个maven项目
然后我们next,选择web,这里我们可以在filter那里输入web得到
后面的maven就自己设置了
然后我们发现,诶,怎么有错误啊!
这个是因为我们没有在maven的pom文件里面添加httpServlet的依赖得到的,我们在pom文件里面添加依赖就好了
javax.servlet
javax.servlet-api
3.0.1
provided
随后我们就发现,红叉消失了。
but,but我们查看一下,却发现
嗯,maven默认的编译jdk是1.5。。。而我们用的是1.8~~,这个该怎么办呢。。。同时我们发现。。。好像少了点什么,对,为什么我们创建的maven项目没有java啊。。。这里我们当然可以去自己创建,这个时候我们要选择,resource folder去创建java文件夹,但是这个时候可能会告诉你已经存在了!what?明明没有啊。。。这个时候我们就要去修改一个东西。我们选择项目
进入Build Path
然后我们修改一下jre
选择
选择我们自己的jre就好了
再回来看,我们两个问题就都解决了
随后我们就要再去配置我们的pom文件,使得可以去把我们的项目发布在我们的tomcat容器里面去。
配置完了的pom文件是
4.0.0
ABoyL
mavenweb
war
0.0.1-SNAPSHOT
mavenweb Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
javax.servlet
javax.servlet-api
3.0.1
provided
mavenweb
org.apache.maven.plugins
maven-compiler-plugin
1.8
UTF-8
false
false
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
http://localhost:8080/manager/text
/mavenweb
UTF-8
mavenweb
tomcat
org.apache.maven.plugins
maven-javadoc-plugin
UTF-8
UTF-8
UTF-8
我们自行修改finlname和path,这个两个一样就好,然后我们发现。。程序又出错了qwq。。。因为我们配置了1.8的jdk,但是我们又不知道那里错了。。。这个还是因为我们的jdk版本有问题。。。因为maven。。。很坑。。。我们继续选择我们项目的属性。。进入Project Facets,我们发现。。怎么jdk又是1.5!!!
好好吧。。。我们快点改了。。。
apply,ok
然后我们神奇的发现。。还是没有用。。。怎么回事。。。不要慌。。。我们更新一个maven 工程
选择我们的project,就ok了
这个时候我们就可以进行发布了。。可以了吗?不。。。我们还有一个东西没有做,,,我们还没有安装启动tomcat,还没有给我们的项目加上一个tomcat。。。或者说给eclipse绑定一个tomcat,
我们进入windows->preference
选择server,进入runtime
add,然后添加我们的tomcat
选择我们的安装目录已经,我们安装的jdk
依旧是在这里我们选择tomcat
然后选择我们的版本和安装目录
这个时候我们就可以在我们的eclipse里面启动我们的tomcat了。点击我们的猫,就启动了
随后我们设置我们的运行的时候的tomcat
依旧是在我们刚刚修改jdk的那个地方,找到Project Facets,去修改Runtimes,打个勾就好了
随后我们新建一个servlet
我们使用eclipse自己生成,会自己在我们的web.xml那里配置好
package L;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class hello
*/
public class hello extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public hello() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#service(HttpServletRequest request, HttpServletResponse response)
*/
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("service");
super.service(request, response);
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
System.out.println("do Get");
}
}
web.xml
Archetype Created Web Application
hello
hello
L.hello
hello
/hello
在项目那里右键,run as
最后一个
这里我们要注意的是修改我们的Maven Runtimes为自己的maven,run,ok