用IDE写一个基本的webApp

要学习java web技术,除了javaSE基本功之外,基础知识还有servlet技术。我们如果只用IDE的话,会把很多问题屏蔽掉,很多细节就想不清楚了。最好的方式,就是用IDE做一个最简单的war包,解压看看文件结构,再手动打个war包试试,梳理下编译流程。

我用的IDE是IntelliJ,步骤是 File | new | project | enterprise | webApplication。

我们就得到了一个基本的webapp框架:

我们写一个最基本的Servlet,只复写doGet方法。

importjavax.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 FirstServlet extends HttpServlet
{
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
        PrintWriter out =
resp.getWriter();
        out.println("this is first Servlet! do get");
    }
}

配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
          
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
          
version="3.0">     <servlet>
        <servlet-name>FirstServlet</servlet-name>
        <servlet-class>FirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FirstServlet</servlet-name>
        <url-pattern>/FirstServlet</url-pattern>
    </servlet-mapping> </web-app>

编码完毕之后,点击Build | Make Project,就已经编译完毕了。然后我们导出war包,点击File | Project Structure | Artifacts| Web Application Archive

点击Build,就可以打一个war包了。

在out文件夹下就可以得到war包了。

导出war包,在tomcat中运行

我们下载一个tomcat,解压,在bin文件夹下,可以找到开启tomcat的命名。

把我们war包放在tomcat的webapp文件夹下,就可以了。输入地址:

解压war包,分析结构

war包的结构图如下:

手动编译打包一个war包

Demo如下:http://files.cnblogs.com/files/chenjie0949/MyServlet.zip

war包编译和打包发布的更多相关文章

  1. eclipse打war包编译文件不更新

    如题.多次打包都不更新,各种clean都试了都不行.重启eclipse也不行.最后重启电脑可以了. 另外eclipse导出war包似乎存在bug,时间比系统时间超前,如下图所示.我17:19导出的包, ...

  2. 通过maven-war-plugin插件对war包分环境打包

    针对多环节,从源头打包入手,当然这些都可以在运维阶段用脚本进行替换来代替 resources/environment/下有四个环境,local本地.dev开发.test测试.pre预上线.prod生产 ...

  3. 查看war包编译时使用的jdk版本

    第一种方式:找到war包的其中一个class文件,用UE打开,看第一行 34(对应十进制的50):JDK1.8 33(对应十进制的50):JDK1.7 32(对应十进制的50):JDK1.6 31(对 ...

  4. jenkins构建成功,但war包没有发布到tomcat下

    如题,jenkins构建成功,在jenkins的workspace中有生成的war包,但没有发布到tomcat的webapps目录. 构建日志 找了很多原因发现应该还是项目相对路径不对导致的,我的wa ...

  5. 使用Tomcat发布war包

    第一步:下载tomacat 1.下载地址:http://tomcat.apache.org 2.解压后目录如下 3.双击bin文件夹下startup.bat 即可启动tomcat, 计算机会弹出控制台 ...

  6. docker:(5)利用docker -v 和 Publish over SSH插件实现war包自动部署到docker

    在 docker:(3)docker容器挂载宿主主机目录 中介绍了运行docker时的一个重要命令 -v sudo docker run -p : --name tomcat_xiao_volume ...

  7. 【项目部署】部署项目以war包部署和解开以目录部署的区别

    我们都知道最简单的部署web项目的方式是打成war包直接仍在tomcat的webapps目录下,我上个项目也确实是这样做的,可是这给我们后期的维护带来了极大的不便,下面就简单研究一下以war包部署和解 ...

  8. IDEA打war包部署本地TOMCAT测试

    在Eclipse中打war包很方便,导出即可直接选择war包,如下图所示: 但是在IDEA中有点麻烦,网上很多教程,做的也都很好,我自己也做一份,加深一下印象. 首先打开File->Projec ...

  9. Qt软件打包发布(QT5.4.1(msvc2013_64_opengl),Win7 64bit)

    环境:QT5.4.1(msvc2013_64_opengl),Win7 64bit 编译方式 Qt开发的程序发布的时候经常采用两种方式:1)静态编译,可生成单一的可执行文件:2)动态编译,需同时附上需 ...

随机推荐

  1. Android开发--ListPreferance 运行报错:android.preference.ListPreference.findIndexOfValue(ListPreference.java:169)

    在Stack Overflow上找到的答案:http://stackoverflow.com/questions/4357094/exception-on-listpreferences “i fix ...

  2. HTML中noscript的用法

    noscript 元素用来定义在脚本未被执行时的替代内容(文本).此标签可被用于可识别 <script> 元素用来定义在脚本未被执行时的替代内容(文本). 标签但无法支持其中的脚本的浏览器 ...

  3. IE6完美解决fixed方法

    ie6对position:fixed不支持,网上有很多解决方法,有的在ie6,ie7上调试成功后,在ie8上又不好使,div层还是跟随滚动条浮 动:以下总结方法,在ie6,ie7,ie8上都调试成功, ...

  4. hql注意事项一

    Space is not allowed after parameter prefix ':' [from EmPaperCatalogDef e where e.parentId =: pcdId]

  5. Oracle- 包

    在一个大型项目中,可能有很多模块,而每个模块又有自己的过程.函数等.而这些过程.函数默认是放在一起的(如在PL/SQL中,过程默认都是放在一起的,即Procedures中),这些非常不方便查询和维护. ...

  6. PowerDesigner 正向工程 和 逆向工程 说明

    PowerDesigner 正向工程 和 逆向工程 说明 database数据库脚本oraclegenerationsql   目录(?)[+]   一. 正向工程与逆向工程说明 在前面几篇里介绍了几 ...

  7. NSTimer、 NSTask、 NSThread 和 NSRunloop 之间的区别

    NSTimer是一个计时器对象,方法调用在对未来的选择对象. NSThread是一个线程类. 也就是创建一个线程. NSTask类是一个过程,一种方式运行程序从您的其他程序. NSOperation是 ...

  8. Android上实现仿IOS弹性ScrollView

    [转]http://www.tuicool.com/articles/ummIJb

  9. 【32】确定你的public继承塑模出Is-A关系

    1.public继承表示Is-A关系,也就是满足里氏代换.与之相对应的,private继承表示根据某物实现出,不满足里氏代换.子类对象初始化父类引用,编译通不过. 2.考虑下面的需求,企鹅继承鸟,Bi ...

  10. [React Fundamentals] Accessing Child Properties

    When you're building your React components, you'll probably want to access child properties of the m ...