IDE创建JavaWeb项目
说实在的,IntelliJ的项目创建方式不如其它IDE的直观,反正我一开始是没搞懂(其实搞懂也很简单),另外IntelliJ的不同版本之间 是有差异的,网上找的一些资料并不准确,最好还是直接看官方文档,根据它的Tutorial走走,这次我看的官方文档是针对IntelliJ v12的,而现在我用的是v13,所幸的是差别并不大。
New Project,然后这样选:
那个Versions只能选3.1,貌似之前还能选3.0,这个版本其实是Servlet的版本,最新的版本是3.1,需要用Tomcat8来承 载,如果你选择用Tomcat7来承载的话,会有一个warning说不认识这个版本,使用默认版本云云,忽略这个warning就是。
在下一步中指定项目名,SDK果断选择最新的1.8(Java8):
这样一来你的服务器的运行环境得部署为Java8,不过这个也没啥压力,Java8多了不少很有用的新特性,如果没有什么历史负担的话干嘛不用?
Finish,我们现在来看看整个project的结构:
.idea 这是IntelliJ的相关东西,我们不用管,src目录用于放java源文件,web目录用于放web资源,WEB-INF是java web应用固定的存放配置及类库的目录,index.jsp是我们首页,HelloWorld.iml是IntelliJ的项目文件,打开工程就是打开它 了,External Library是一些外部引用的库,展开看看好多。
现在我们来创建一个Servlet,Servlet是Java的服务器端小程序(其实也可以不小),右击src目录:
然后命名为SayHello:
展开,打开SayHello.java的时候却发现IntelliJ提示找不到符号:
这一定是因为某些包没引用。如何引用?一般都是设置CLASSPATH,告诉java如何去找它的包,而这里我们可以直接指定包的位置。
打开Project Struture设置对话框(快捷键为+<;>),如图:
点加号,选“Jars or directories…”,再找到Tomcat下的servlet-api.jar。
这样就可以了,我们把doPost删掉,用不到,再在doGet方法中写点东西输出,SayHello.java就变成这样:
package com.mycompany;
import java.io.IOException;
import java.io.PrintWriter;
/**
* Created by guogangj on 14-5-13.
*/
public class SayHello extends javax.servlet.http.HttpServlet {
protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World!</h1>");
out.println("</body>");
out.println("</html>");
}
}
java的代码写好了,配置文件也要加点东西,打开web.xml,加上一个“”节点,改完后的web.xml变成这样:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>SayHello</servlet-name>
<servlet-class>com.mycompany.SayHello</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SayHello</servlet-name>
<url-pattern>/sayhello</url-pattern>
</servlet-mapping>
</web-app>