摘要: 用intellij idea创建web项目时常用无模板和有模板创建
<一>不选择任何maven模板创建web项目
Create New Project或者File->New->Project,如图:
点击maven,(不用选择Create from archetype,因为此处讲解不使用maven模板创建web项目),点击next,如图:
填写GroupId和ArtifactId,点击next,如图:
填写项目名称,点击Finish,如图:
此时的目录结构如图所示:可以看到这里只创建了java的文件目录,没有创建web的文件目录。
idea会有一个提示,自动引入,点击它:
部署项目,File->Project Structure或点击如图所示的图标:
设置SDK,选择自己电脑上安装的SDK版本。设置Project compiler output,通常选择默认,这里是编译后的文件目录,如图:
点击Modules,可以看到这里没有任何模板服务,在这里创建一个web服务,点击+,选择web
设置webapp。双击Web Resource Directory,在弹出的窗口路径中选择src\main,然后在后面添加\webapp,点击ok。如图:
给web文件目录设置web.xml,如图:
设置好后点击应用:
添加tomcat依赖,如图所示:
在弹出的窗口中选择tomcat,点击添加,如图所示:
点击Artifacts,这里设置当前项目发布信息。点击+,选择From Modules...在弹出的窗口中点击ok,
如图所示,点击应用
当前目录如图所示,多了webapp:
设置tomcat:点击如图所示图标:
点击+,选择Tomcat Server ->Local.如图:
如图所示,第一次进入会隐藏热部署设置,需要下次进来设置。
选择Deployment->+->Artifact.如图;
如图所示,这里我使用默认:
现在反回Server,如图在On frame deactivation中选择Update classes and resources;设置热部署
点击应用或,ok。
在webapp下面新建index.jsp页面,如图;
在web.xml中添加欢迎节点,如图:
启动程序,如图所示;
成功后,浏览器输出hello Word,如图:
ok,到这里,web项目设置完成。最终目录结构如图:
(二)选中maven中web模板创建文项目
Create New Project或者File->New->Project,如图:
勾上Create frome archetype,选择maven-archetype-webapp模板,点击下一步,如图:
填写GroupId和ArtifactId,如图所示:
选择中央仓库的地址,点击+,添加一个Add Maven Property属性,
这里在Properties中添加一个参数archetypeCatalog=internal,不加这个参数,在maven生成骨架的时候将会非常慢,有时候会直接卡住。
来自网上的解释:archetypeCatalog表示插件使用的archetype元数据,不加这个参数时默认为remote,local,即中央仓库archetype元数据,由于中央仓库的archetype太多了,所以导致很慢,指定internal来表示仅使用内部元数据。如图:
填写项目名称,点击finish,如图所示:
idea为我们创建好的目录结构如图所示:少java文件:
启动java web,打开project structure,如图所示:
选择Project,Project SDK是java jdk安装选择,Project language level是选择语言版本,Project compileroutput 是编译后的文件目录,这里我们的使用默认,你也可以根据需要填写。如图
选择Facets,点击+,选择web,如图所示:
在弹出的窗口中选择项目,点击ok,如图所示;
设置web.xml文件目录,按如图所示的步骤选择,如图所示:
选择Web Resource 目录,按如图所示的步骤选择,如图:
选择Artifacts,点击+,选择Frome Madules....,在弹出的窗口中选择ok,点击Apply。如图所示:
添加java文件目录,因为maven模板创建的web项目中少java文件目录,所以要自己创建,回到Module->选择项目名->Sources->main右击->New Folder...,在弹出的文件夹中填写java点击ok如图所示:
将刚才新建的普通java文件夹变为Sources文件夹,点击Apply,再点击ok。如图所示步骤:
当集成项目,项目中引入jar包时,启动项目如果报下面的错误,表明找不到jar包,我们要手动建立lib来放jar包。
03-Dec- 09:37:44.044 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.listenerStart Error configuring application listener of class org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1285) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:520) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:501) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4649) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5189) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1702) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:482) at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:431) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401) at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324) at sun.rmi.transport.Transport$1.run(Transport.java:200) at sun.rmi.transport.Transport$1.run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)03-Dec- 09:37:44.045 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.StandardContext.listenerStart Skipped installing application listeners due to previous error(s)
手动新建lib:
在WEB-INF下面新建一个lib目录,如图;
根据如图所示的步骤找到刚才所建立的lib目录,如图:
找到lib后在弹出的框中选择Jar Directory点击ok,如图
进入Artifacts,选中右边项目中的jar包,右击选择Put /WEB-INF/lib,ok,如图
打开“Edit Configurations”,如图所示:
按照如图所示步骤进行选择,如图:
选择Deployment->+->Artifact....,点击应用,如图所示:
进行热部署,选择server->On frame deactiveation中选择->Update classes and resources,点击应用,点击ok。如图:
点击启动程序,如图所示,web项目搭建成功:
最终的目录结构如图所示: