文档章节

利用IntelliJ IDEA社区版开发servlet

lonewolf
 lonewolf
发布于 2014/11/20 19:26
字数 1256
阅读 1213
收藏 10
点赞 0
评论 1
在几个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

粉丝 117
博文 53
码字总数 17561
作品 1
湛江
程序员
加载中

评论(1)

啦啦啦拉拉
啦啦啦拉拉
还不如用maven
JSP 学习总结---学习笔记

什么是JSP 1)为什么说,Servlet是一个动态Web开发技术呢? Servlet是基于服务端的一种动态交互技术, HttpServletRequest表示客户端到服务端的对象 HttpServletResponse表示服务端到客户端的...

知止内明 ⋅ 04/18 ⋅ 0

tomcat、weblogic、jboss的区别,容器的作用

一、tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及...

水墨如丹青 ⋅ 04/13 ⋅ 0

Tomcat,JBoss与JBoss Web

最近接触到应用服务器JBoss,此外JBoss Web与Tomcat也同为web服务器,便查阅资料对三者进行比较,供大家参考。 一、Tomcat Tomcat 服务器是免费开源的Web 应用服务器。支持最新的Servlet 和J...

thinkyoung ⋅ 2014/11/16 ⋅ 0

成为Java高手的25个学习目标

你已经掌握了这25条中的多少条了呢? 1.你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该了解UML,尤其是 class,object,interaction以及statediag...

thinkyoung ⋅ 2014/11/01 ⋅ 0

Servlet的一些细节--学习笔记

Servlet细节 1)浏览器访问的url-pattern只是一个符合格式的任意字符串,以/开头 2)一个Servlet的url-pattern可以是1个或多个,有二种形式; a).xx b)/xx/ 注意:/不能一起直接使用 3)/和....

知止内明 ⋅ 04/17 ⋅ 0

JavaWeb开发比较重要的面试题

JavaWeb开发比较重要的面试题 1. 编码转换:怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 答:示例代码如下: String s1=”你好”; String s2=new String(s1.getBytes(“GB2312”...

xj_9264 ⋅ 05/06 ⋅ 0

web项目中web.xml的作用

每个javaEE工程中都有web.xml文件,那么它的作用是什么呢?它是每个web.xml工程都必须的吗? 一个web中可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 web.xml文件是用来...

ChinaHYF ⋅ 04/27 ⋅ 0

J2EE进阶(二十四)JBoss Web和 Tomcat的区别

J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求。近年来,作为开源中间件的全球领导者...

sunhuaqiang1 ⋅ 05/27 ⋅ 0

Java Web(一) Servlet详解!!

一、什么是servlet?     处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了解一些http协议的东西,并且...

architect刘源源 ⋅ 05/08 ⋅ 0

JavaWeb09-HTML篇笔记(二)

1.1 案例一:使用Servlet完成一个用户登录的案例.1.1.1 需求: 在网站的首页上,登录的链接,点击登录的链接,可以跳转到登录的页面.在登录的页面中输入用户名和密码点击登录的案例.完成登录的功...

我是小谷粒 ⋅ 05/21 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Centos7重置Mysql 8.0.1 root 密码

问题产生背景: 安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下: 第一步:修改配置文件免密码登录mysql vim /etc/my.cnf 1...

豆花饭烧土豆 ⋅ 今天 ⋅ 0

熊掌号收录比例对于网站原创数据排名的影响[图]

从去年下半年开始,我在写博客了,因为我觉得业余写写博客也还是很不错的,但是从2017年下半年开始,百度已经推出了原创保护功能和熊掌号平台,为此,我也提交了不少以前的老数据,而这些历史...

原创小博客 ⋅ 今天 ⋅ 0

LVM讲解、磁盘故障小案例

LVM LVM就是动态卷管理,可以将多个硬盘和硬盘分区做成一个逻辑卷,并把这个逻辑卷作为一个整体来统一管理,动态对分区进行扩缩空间大小,安全快捷方便管理。 1.新建分区,更改类型为8e 即L...

蛋黄Yolks ⋅ 今天 ⋅ 0

Hadoop Yarn调度器的选择和使用

一、引言 Yarn在Hadoop的生态系统中担任了资源管理和任务调度的角色。在讨论其构造器之前先简单了解一下Yarn的架构。 上图是Yarn的基本架构,其中ResourceManager是整个架构的核心组件,它负...

p柯西 ⋅ 今天 ⋅ 0

uWSGI + Django @ Ubuntu

创建 Django App Project 创建后, 可以看到路径下有一个wsgi.py的问题 uWSGI运行 直接命令行运行 利用如下命令, 可直接访问 uwsgi --http :8080 --wsgi-file dj/wsgi.py 配置文件 & 运行 [u...

袁祾 ⋅ 今天 ⋅ 0

JVM堆的理解

在JVM中,我们经常提到的就是堆了,堆确实很重要,其实,除了堆之外,还有几个重要的模块,看下图: 大 多数情况下,我们并不需要关心JVM的底层,但是如果了解它的话,对于我们系统调优是非常...

不羁之后 ⋅ 昨天 ⋅ 0

推荐:并发情况下:Java HashMap 形成死循环的原因

在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历...

码代码的小司机 ⋅ 昨天 ⋅ 2

聊聊spring cloud gateway的RetryGatewayFilter

序 本文主要研究一下spring cloud gateway的RetryGatewayFilter GatewayAutoConfiguration spring-cloud-gateway-core-2.0.0.RC2-sources.jar!/org/springframework/cloud/gateway/config/G......

go4it ⋅ 昨天 ⋅ 0

创建新用户和授予MySQL中的权限教程

导读 MySQL是一个开源数据库管理软件,可帮助用户存储,组织和以后检索数据。 它有多种选项来授予特定用户在表和数据库中的细微的权限 - 本教程将简要介绍一些选项。 如何创建新用户 在MySQL...

问题终结者 ⋅ 昨天 ⋅ 0

android -------- 颜色的半透明效果配置

最近有朋友问我 Android 背景颜色的半透明效果配置,我网上看资料,总结了一下, 开发中也是常常遇到的,所以来写篇博客 常用的颜色值格式有: RGB ARGB RRGGBB AARRGGBB 这4种 透明度 透明度...

切切歆语 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部