java web 简单入门(一)

title: JavaWeb 第一次访问servlet

categories: JavaWeb

什么是Servlet?

  • servlet是在服务器端运行的一个小程序。一个servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问这个驻留在服务器内存里的servlet程序。
  • servlet为Java程序提供了一个统一的web应用规范。

tomcat和servlet是什么关系?

  • 大家后面写程序应该看到,servlet没有main方法,在面临如何启动、如何关闭、如何寻找等操作上,我们需要一个程序或者说应用来对servlet进行控制,这样的一个程序或者应用就称之web容器。tomcat就是这样一个web容器,我们发出对servlet的调用请求,到达服务器端,由tomcat全面负责进行接管,由tomcat与servlet进行协调。

在tomcat的webapps目录下建立以下目录结构。

  • 注意字母大小写、横线,要与上图完全一致。
  • WEB-INF目录是Servlet服务器的一个约定,它用来存放配置文件和库文件,必须是这个名字。
  • src目录是打算写代码的(按说不应该在tomcat随意建立自己的目录,写代码,我们现在做实验,只好先暂时这样)。
  • 你可以尝试一下,现在,启动tomcat,然后浏览器访问http://localhost:8080/ch1/类似的相关URL。会出现404错误,因为现在只是创建了一个空网站目录,里面还没有任何资源。没有找到相对应资源才会提示404错误。

现在我们打算写一个Servlet程序。

手工编写Servlet程序的步骤

(1)继承HttpServlet

(2)重写doGet()或者doPost()方法

(3)在web.xml中注册Servlet

  • Ch1Servlet.java源代码

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Ch1Servlet extends HttpServlet{
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter out = resp.getWriter();
        java.util.Date today = new java.util.Date();
        out.println("<html>" + "<body>" + "<h1 align=center>HF\'s Chapter1 Servlet</h1>"
        + "<br>" + today + "</body>" + "</html>");
    }
}


编译写好的源代码文件

  • 进入命令行窗口,用javac命令对源代码文件进行编译,会生成同名的class文件。
javac -classpath /usr/local/Cellar/tomcat/8.0.32/libexec/lib/servlet-api.jar -d webapps/ch1/WEB-INF/classes webapps/ch1/src/Ch1Servlet.java

  • 在我们实验室机器,上面的命令,有关路径可能要写成如下这样。
javac -classpath c:/tomcat/lib/servlet-api.jar -d WEB-INF/classes src/Ch1Servlet.java
  • 对上面编译命令的解释:我用javac命令,要用到servlet-api.jar类库,对Ch1Servlet.java进行编译,把编译好的文件放到classes目录中。所以上面的编译命令由三部分组成。

在web.xml文件中进行Servlet的映射配置

  • 我现在想输入一个URL,让URL去调用刚才的Servlet程序。那么必须让URL和这个Servlet产生关联。这个关联必须写在web.xml配置文件中。
  • web.xml是tomcat中最重要的一个配置文件。
  • 在WEB-INF目录下,新建一个web.xml文件,输入如下代码。
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <servlet>
        <servlet-name>Chapter1 Servlet</servlet-name>
        <servlet-class>Ch1Servlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Chapter1 Servlet</servlet-name>
        <url-pattern>/Serv1</url-pattern>
    </servlet-mapping>

</web-app>


最后的文件、目录结构应该如下


启动tomcat,看效果

  • 你现在刷新浏览器,网页上的时间应该发生变化。你想一想,你刷新一次,最新的时间就写在了网页上,tomcat服务器做了一个什么样的工作呢?

扩展实验

  • 在微信上聊天,有“扔骰子”,比大小。
  • 我们发出请求,微信(服务器)反馈回来“骰子”数字大小。
  • 你现在已经有能力用JavaWeb来实现这个功能,只不过界面不如微信漂亮罢了。
  • 你要用到这行代码:
String d1 = Integer.toString((int)(Math.random()*6)+1);//生成一个从1到6的随机数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值