当前位置: 首页 > news >正文

使用JDK开发Servlet程序

在eclipse中集成JDK和tomcat服务器方法很简单,我们可以在服务器上运行想要的东西。但有时也需要我们手动档编译我们的Servlet程序。
所以才有了今天这篇文章,本文以下内容从网上参考,有很多现成的东西,比如代码就不要自己再去写了。

一:准备源程序

首先我们需要一段Servlet的源程序,Hello.java文件如下:

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.*;
import javax.servlet.http.*;

public class Hello extends HttpServlet {
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html") ;
        PrintWriter out=response.getWriter() ;
        out.println("<html>");
        out.println("<head><title>This is my first Servlet...</title></head>");
        out.println("<body><h1>Hello World!</h1></body>");
        out.println("</html>");
        out.flush();
    }
}

程序很简单,就是输出Hello World!我想这是每个程序员都写过度程序。把以上程序保存到C:\src\Hello.java路径下。

二:编译源程序

下面我们要使用JDK环境来编译我们的程序,首先保证你的机器上已经安装了JDK和Tomcat:
        1.点击Windows操作系统任务栏的“开始”按钮-->“运行”,输入cmd启动控制台程序。
        2.然后切换到我们程序所保存的文件夹下面,在命令行中输入:cd C:\src
        3.使用dir命令可以查看该目录下面有哪些文件。
        4.使用javac命令编译程序,输入:javac Hello.java,如果出现了下面的提示:
错误一:'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。
解决方案:说明jdk的运行环境未找到,需要设置环境变量path指定jdk的路径。
错误二:Hello.java:3:软件包 javax.servlet不存在,或者提示 软件包 javax.servlet.http不存在
解决方案:说明servlet的jar包未找到,因为servlet的jar包属于tomcat的。也应该设置环境变量Classpath指定servlet的jar包路径。

一般情况下我们会碰到上面两种错误,针对于以上错误信息,我分别解决。由于本次属于临时编译程序,也就是临时设置path和classpath信息,所以我选用在命令行中设置,并且不会破坏其原有设置,创建一个bat文件,内容如下:

set path=%path%;C:\Program Files\Java\jdk1.6.0_10\bin
set classpath=.;C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\servlet-api.jar

其中的jdk和tomcat的路径信息根据自己的环境进行设置,保存到C:\src\sp.bat文件。
这时候我们再次使用命令行,首先输入sp.bat,可以看到如下提示:

说明环境变量设置成功,让我们再次编译我们的源程序,如下图:

没有任何提示,说明我们的编译通过了。到文件夹下面可以看到多了一个Hello.class的文件,这个就是我们刚刚生成的编译过的文件。

三:在Tomcat中配置Servlet

将编译过的Hello.class文件复制到以下目录:
Tomcat的安装目录\webapps\root\WEB-INF\classes
----提示:如果WEB-INF目录下面没有classes目录,需要自己手动创建一个classes文件夹。

① 注册Servlet到web.xml

打开Tomcat的安装目录\webapps\root\WEB-INF\目录下面的web.xml文件,添加servlet的注册信息,如下:

......
    <servlet>
      <servlet-name>myhello</servlet-name>
      <servlet-class>Hello</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>myhello</servlet-name>
      <url-pattern>/servlet/Myhello.do</url-pattern>
    </servlet-mapping>
</web-app>

配置完成保存并关闭文件。

② 启动Tomcat服务

通过Windows的服务里面找到“Apache Tomcat 7.0 Tomcat7”并点击启动,我自己机器上安装的是Tomcat7,你可根据自己机器上安装的Tomcat来启动它。
然后再浏览器的地址栏中输入:http://localhost:8080/servlet/myhello.do,可以看到我们熟悉的Hello World!,如下图:

哈哈,说明我们的程序已经成功了,是不是很有成就感!告诉你这才是你学java的开始,以后学java的路还很长,并且路上有很多狗血的事情在等着你。

参考出处:http://wenku.baidu.com/view/12d1592db4daa58da0114af1.html

相关文章:

  • 程序员,你需要大量地阅读
  • map我觉得非水题-hdu-4329
  • php一些不是很常用的操作mysql的函数
  • 安沃广告问题
  • vSphere 6.0 新功能介绍 系列 前言
  • PF_RING 总结
  • Rational Software Architect V8.5.1安装
  • Repeater 双向排序
  • 时间它会说话
  • C++ | class size
  • XCode详解及iOSApp上传
  • 尺度空间(Scale space)理论
  • Firefly 配置说明
  • httpd详解
  • 一例用方错误的女子咳则遗尿案
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Git学习与使用心得(1)—— 初始化
  • PHP变量
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • SegmentFault 2015 Top Rank
  • Solarized Scheme
  • vagrant 添加本地 box 安装 laravel homestead
  • vue 个人积累(使用工具,组件)
  • Yii源码解读-服务定位器(Service Locator)
  • 阿里云前端周刊 - 第 26 期
  • 前端面试之CSS3新特性
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​学习一下,什么是预包装食品?​
  • # 数据结构
  • #define、const、typedef的差别
  • #大学#套接字
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (一)Linux+Windows下安装ffmpeg
  • (一)WLAN定义和基本架构转
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net 发送邮件
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .net快速开发框架源码分享
  • .NET中winform传递参数至Url并获得返回值或文件
  • .net中的Queue和Stack
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @WebService和@WebMethod注解的用法
  • [ 手记 ] 关于tomcat开机启动设置问题
  • []我的函数库
  • []指针
  • [C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练
  • [halcon案例2] 足球场的提取和射影变换