JavaWeb开发 使用IDEA创建Servlet程序

前言

最近做项目需要,从之前熟悉的PHP和Python转到了JavaWeb,所以就有了这个笔记。资源图片都是来自网上的资源,根据自己的实际操作应用,做了总结归纳。

所需工具

  • JDK
  • Tomcat
  • IDEA

创建工程

设置工程名字:

创建完成后工程结构如下:

上面的图片是在网络上复制的,好像我用的IDEA 2017.3.2没有这个Create web.xml的选项,我也不知道为啥,难道是IDEA越更新功能越退步了? 如下图:

所以这里就要自己配置IDEA添加web.xml。 步骤:打开Project Structure,在facets中选中次级的web或者在Modules中选中web,在deployment Descriptors面板里,点击 +号选择web.xml以及版本号。然后在弹出的对话框中修改xml默认的目录,加上web就可以了。

然后确定,就有web.xml文件了。 如图:

Web工程设置

创建classeslib目录

在WEB-INF 目录下点击右键,New → Directory,创建 classes 和 lib 两个目录

classes目录用于存放编译后的class文件,lib用于存放依赖的jar包

classes目录配置

File → Project Structure...,进入 Project Structure窗口,点击 Modules → 选中项目“JavaWeb” → 切换到 Paths 选项卡 → 勾选 “Use module compile output path”,将 “Output path” 和 “Test output path” 都改为之前创建的classes目录

即将后面编译的class文件默认生成到classes目录下

lib目录配置

还是在这个Project Structure这个窗口。点击 Modules → 选中项目“JavaWeb” → 切换到 Dependencies 选项卡 → 点击右边的“+”,选择 “JARs or directories...”,选择创建的lib目录。

选择Jar Directory

配置打包方式Artifacts

点击 Artifacts选项卡,IDEA会为该项目自动创建一个名为“JavaWeb:war exploded”的打包方式,表示 打包成war包,并且是文件展开性的,输出路径为当前项目下的 out 文件夹,保持默认即可。另外勾选下“Build on make”,表示编译的时候就打包部署,勾选“Show content of elements”,表示显示详细的内容列表。

Tomcat配置

创建Tomcat容器

Run -> Edit Configurations,进入“Run Configurations”窗口,点击"+"-> Tomcat Server -> Local,创建一个新的Tomcat容器。

配置服务器名称路径

在"Name"处输入新的服务名,点击“Application server”后面的“Configure...”,弹出Tomcat Server窗口,选择本地安装的Tomcat目录 -> OK

运行配置

在“Run Configurations”窗口的“Server”选项板中,去掉勾选“After launch”,设置“HTTP port”和“JMX port”,点击 Apply -> OK,至此Tomcat配置完成。

JavaWeb测试

运行配置

Run -> Edit Configurations,进入“Run Configurations”窗口,选择之前配置好的Tomcat,点击“Deployment”选项卡,点击“+” -> “Artifact”-> 选择创建的web项目的Artifact... 修改“Application context”-> Apply -> OK 说明:此处的Application context是指定本工程的根目录。就是你访问服务器的路径,比如这里设置了JavaWeb,那么访问服务器的地址就是http://localhost:8080/JavaWeb

编辑Jsp文件

在index.jsp文件中的body之间添加要显示的内容,然后点击“运行”的绿色三角

打开浏览器,输入:localhost:8080/JavaWeb

至此,intellij idea创建并设置javaweb工程全部完成,下面是在其中编写并运行Servlet。

Servlet实现

接下来记录一下怎么编写一个Servlet程序,到Servlet程序运行起来的全过程。

引入Servlet相关包

我感觉IDEA还是有点不太智能,明明配置了Tomcat了,都不给我自动引入Servlet包,导致在IDEA中建立Servlet使用javax.servlet.http.HttpServlet等类时,出现了如下错误:

原因:IntelliJ IDEA 没有导入 servlet-api.jar 这个.jar包,需要手动导入。

导入步骤如下:选中项目,右击选择“Open Modules Settings”,选择“Libraries”,点击“+”,选“Java”;在弹出的窗口中选择tomcat所在的目录,在lib目录下找到servlet-api.jar这个jar包导入完成即可。

编写Servlet源文件

在src目录下新建HelloWorld.java,并编写一下代码并进行编译: 代码如下:

import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import java.io.IOException;  
import java.io.PrintWriter;  

public class HelloWorld extends HttpServlet {  
private String message;  

    @Override  
    public void init() throws ServletException {  
    message = "Hello world, this message is from servlet!";  
    }  

    @Override  
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {  
        //设置响应内容类型  
    resp.setContentType("text/html");  

        //设置逻辑实现  
    PrintWriter out = resp.getWriter();  
    out.println("<h1>" + message + "</h1>");  
    }  

    @Override  
    public void destroy() {  
    super.destroy();  
    }  
} 

编译后会发现在classes目录下生成了HelloWorld.class文件

部署servlet

方法1

在WEB-INF目录下web.xml文件的标签中添加如下内容:

<servlet>  
    <servlet-name>HelloWorld</servlet-name>  
    <servlet-class>HelloWorld</servlet-class>  
</servlet>  

<servlet-mapping>  
    <servlet-name>HelloWorld</servlet-name>  
    <url-pattern>/HelloWorld</url-pattern>  
</servlet-mapping>  

方法2

(反正我自己测试是没有成功的) 在HelloWorld文件的类前面加上:@WebServlet("/HelloWorld")

运行Servlet

点击运行按钮

控制台出现successfully则tomcat服务启动成功!打开浏览器输入:localhost:8080/JavaWeb/HelloWorld即可查看servlet运行状态了.

后记

作为一个写习惯了PHPPython的人来说,刚刚转到Java还是有各种不适应的,还好Java和我最喜欢写的C#语法很相近,所以上手也不是很难,就是各种环境配置好麻烦= =...

About

了解更多有趣的操作请关注我的微信公众号:DealiAxy 每一篇文章都在我的博客有收录:blog.deali.cn