文档章节

利用IntelliJ IDEA社区版开发servlet

lonewolf
 lonewolf
发布于 2014/11/20 19:26
字数 1256
阅读 1268
收藏 10
在几个java IDE中,IntelliJ IDEA应该是最养眼的了,不过免费的社区版不能配置web服务器,所以拿来开发servlet感觉困难重重。经过一番探索,终于闯出了一条便捷的路。快速编码,运行,调试都没问题,我所使用的版本是14.0.1。下面就来介绍一下。

1、下载jetty。jetty是一个servlet容器,这一步是能够运行和调试的重点,因为不能配置web服务器,所以我们需要一个嵌入式的servlet容器。地址: http://www.eclipse.org/jetty/ 。下载之后解压备用,我所用的是9.2.5版本。

2、新建java项目。以下这一步的时候注意要勾选。

这是因为我们要在内部运行jetty,就得有一个入口,勾选这个之后会生成一个Main类,里面有main函数,这就是入口函数。之后就是填写项目名称,可以随便填写一个,我写的是demo。

3、打开项目配置选项。建好项目之后就是配置了,File->ProjectStructure打开项目配置选项。

4、配置jetty全局库。如下图,

把jetty运行所需要的库加进全局库里。放到全局库而不是放到当前项目中是因为以后每个项目都需要,以后新的项目不用再复制进去。需要的库如下:


5、添加jetty运行库到新建的项目中,如下图,

右击刚建好的jetty-server库,点击Add to Modules,在弹出的窗口中选择demo即可。

6、建立web所需要的目录和文件。在demo下新建二级目录,为web/WEB-INF。

7、修改生成class文件的路径,如下图,

把path修改到web/WEB-INF/classes下。

8、在src下新建一java文件,就是一个servlet,继承自HttpServlet。代码如下,
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 MainServlet extends HttpServlet {

    /**
     * 处理get或post请求
     *
     * @param request
     * @param response
     * @throws javax.servlet.ServletException
     * @throws java.io.IOException
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("Servlet MainServlet.");
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet 内部处理方法">

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }

    // </editor-fold>

}

9、修改Main.java入口文件,如下代码,
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

public class Main {
    // 端口
    private static final int PORT=8090;
    // 根路径
    private static final String contextPath="/demo";

    public static void main(String[] args) throws Exception {
        // 建立jetty服务器
        Server server=new Server(PORT);
        ServletContextHandler context=new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath(contextPath);
        server.setHandler(context);
        // 添加servlet,可添加多个
        context.addServlet(new ServletHolder(new MainServlet()),"/Main");
        // 启动服务器
        server.start();
        server.join();
    }
}

10、运行或调试。至此,我们已可以在IntelliJ IDEA内运行起来了,效果如下,

看到这个就说明服务器已运行。在浏览器中打开http://localhost:8090/demo/Main即可看到结果。
注意:修改代码后,一定要先关闭正在运行的项目,再重新开启才行,不然启动时就会出现端口被占用的错误。这个时候有个方法可以补救,那就是关掉整个项目窗口,会有是否要结束连接的提示,点击Disconnect即可,如下图,


11、配置文件web.xml。如果我们要布在tomcat或其它的服务器上,那就得在web/WEB-INF目录下添加一个配置文件web.xml了,代码如下,
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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">
    <servlet>
        <servlet-name>MainServlet</servlet-name>
        <servlet-class>MainServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MainServlet</servlet-name>
        <url-pattern>/Main</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

12、添加第三方jar。如果我们有其它的第三方jar要添加,可新建一目录web/WEB-INF/lib,然后把jar都放到这下面,右击lib选择"Add as Library"即可。

13、保存用户项目模板。这时我们把刚才的项目保存成用户项目模板,以后新建的时候就会得到 相同文件结构和配置的项目,方便开发。方法为菜单Tools->Save Project as Template。这时整个项目的结构如下,


14、添加servlet文件模板。最后还有一个要做的就是添加servlet的模板,这样新建java文件时可直接生成一个Servlet类。如下图,

在系统配置窗口中添加,内容如下,
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
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;

/**
 * Created by ${USER} on ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE}.
 */
public class ${NAME} extends HttpServlet {

    /**
     * 处理get或post请求
     *
     * @param request
     * @param response
     * @throws javax.servlet.ServletException
     * @throws java.io.IOException
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("Servlet ${NAME}.");
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet 内部处理方法">

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }
    
    // </editor-fold>

}
到此,整个过程完成了,不过你不要被这么长的步骤吓着,其实很多都是基础,重点也就是如何嵌入jetty而已。

© 著作权归作者所有

共有 人打赏支持
lonewolf

lonewolf

粉丝 119
博文 55
码字总数 17988
作品 2
湛江
程序员
私信 提问
加载中

评论(1)

啦啦啦拉拉
啦啦啦拉拉
还不如用maven
Servlet中根目录重定向的问题

第一次在社区发问题, 初学Servlet,碰到一个有关更目录重定向的问题: 1.配置web.xml LoginServlet com.servlet.LoginServlet LoginServlet / 2 在LoginServlet的doGet方法中,重定向到/bl...

吴理歌
2014/08/03
1K
1
手写实现一个迷你版的Tomcat

  点击上方“java进阶架构师”,选择右上角“置顶公众号”   20大进阶架构专题每日送达   Tomcat,这只3脚猫,大学的时候就认识了,直到现在工作中,也常会和它打交道。这是一只神奇的...

java进阶架构师
2018/09/18
0
0
Servlet 3.0 介绍

下载 Servlet 3.0 规范 Java servlets 是一项被普遍接受的技术,用于构建基于 web 应用程序的动态内容;Servlet 3.0 规范早期草案版本的发行让该技术在特性和应用程序接口(Application Progra...

红薯
2010/05/27
1K
4
(JavaEE-07)JSP.md

JSP JSP全称是Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态Web资源的技术。JSP的编写就像编写HTML一样简单,但是与HTML不同的是,在JSP中,可以编写Java代码...

_-Leon-_
2014/07/04
0
0
Spring Boot 学习系列(08)—自定义servlet、filter及listener

此文已由作者易国强授权网易云社区发布。 欢迎访问网易云社区,了解更多网易技术产品运营经验。 传统的filter及listener配置 在传统的Java web项目中,servlet、filter和listener的配置很简单...

网易云
2018/11/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

漏洞防御与修复工作

漏洞管理工作是企业安全建设必不可少的一环,在风险管理工作中,漏洞管理能够防患于未然,企业对漏洞管理有着广泛的基础建设和实践经验。但随着攻防技术的发展,传统漏洞管理的安全技术和管理...

linuxprobe16
48分钟前
1
0
MicroPython技术及应用前景

1 Micropython技术是什么? MicroPython极精简高效的实现了Python3语言。它包含Python标准库的一小部分,能在单片机和受限环境中运行。 1.1 MicroPython发展 由剑桥大学的理论物理学家乔治....

bodasisiter
54分钟前
4
0
跟我学Spring Cloud(Finchley版)-13-通用方式使用Hystrix

本节详细讲解使用Hystrix的通用方式。 简介 Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要...

周立_ITMuch
今天
2
0
🛠️Hanjst/汉吉斯特更新加JavaScript运行时优化等

这是 Hanjst/汉吉斯特 发布以来的首个主要升级更新版本。这次的主要升级更新的内容包括移除HTML Comments注释行, 优化在 Hanjst include模板文件时的JavaScript运行时环境。 Hanjst 在设计和...

wadelau
今天
3
0
OSChina 周六乱弹 —— 舔狗是没有好下场的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听什么# #今天听这个# 分享 Nirvana 的歌曲《Smells Like Teen Spi...》 《Smells Like Teen Spi...》- Nirvana 手机党少...

小小编辑
今天
590
14

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部