javaWeb (一) Servlet HelloWorld

先来个demo helloworld:

在 Tomcat 服务器的 webapps 下创建 test 目录 结构如下
这里写图片描述

helloServlet 代码,在cmd 中编译成class 文件。

package com.zll;
import javax.servlet.*;
import java.io.IOException;

public class helloServlet extends GenericServlet{
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
servletResponse.getOutputStream().write("hello~wrold".getBytes());
    }
}

命令行窗口 cd 到 test/WEB-INF/classes 目录下
执行命令:

F:\Service\tomcat8\webapps\test\WEB-INF\classes>javac -classpath F:/Service/tomcat8/lib/servlet-api.jar -d . helloServlet.java

编译后直接生产如下目录文件:
这里写图片描述

web.xml 中配置 serlvet:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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"
  version="3.1">
    <servlet>
        <servlet-name>helloServlet</servlet-name>
        <servlet-class>com.zll.helloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>helloServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

启动 tomcat 服务器,访问 localhost:8080/test/hello 就会打印出
hello~wrold

Servlet 是什么:

Servlet是运行在服务器端的小程序
Servlet不能独立运行,它只能运行服务器上(实现了Servlet-api接口的服务器上:例如tomcat)。从上面的例子可以看出,浏览器访问 该servlet,服务器来创建servlet 并调用 service 方法,在通过 response对象将数据输出给浏览器。

客户端发的任何请求都需要访问客户端的servlet(包括静态资源也是访问服务器 缺省的servlet)
做个试验:如果你web.xml 中配置了

<!-- 就会覆盖掉服务器默认的servlet 客户端就无法访问默认的静态资源了,需要你自己来处理-->
<url-pattern>/</url-pattern>

Servlet生命周期

init();
用户第一访问时启动调用,或者显示的配置,服务器启动时,调用。不论何种方式,servlet只会调用一次init 方法,一单启动,就一直驻留到服务器内存中,知道显示的调用distroy方法,或者服务器停止调用distroy方法时关闭。
service():
在客户请求时,调用该方法。service方法用来处理数据交互的地方。
destroy();
服务器停止。或者被显示调用时。

Servlet配置:

<servlet>
    <!--找到指定的servlet 并起个名字叫 helloServlet-->
    <servlet-name>helloServlet</servlet-name>
    <servlet-class>com.zll.helloServlet</servlet-class>
    <!--如果配置了改属性,那么该servlet会在服务器启动是创建
     使用场景,struts中使用到了该配置,提前初始-->
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <!--给叫 helloServlet 的Serlvet 配置url匹配路径 -->
    <servlet-name>helloServlet</servlet-name>
    <url-pattern>/hello</url-pattern>
    <!--
    url可以谁知模糊匹配:
    /aaa/*
    /*
    /*.do
    优先匹配 限定级别最严谨的。  当出现   /aaa/aa.do 时 *.do 的匹配级别低于/aaa/*
    -->
</servlet-mapping>
</web-app>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值