JavaWeb 入门:Hello Servlet

网友投稿 220 2022-10-11


JavaWeb 入门:Hello Servlet

目录Servlet 概述Hello Servlet总结

Servlet 概述

serlvet sun公司 开发动态web 的一门技术。

Servlet(Server Applet)是java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

广义的Servlet是指任何实现了这个Servlet接口的类,。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

sun公司在api 中提供了一个接口 如果我们想要开发一个servlet程序 我们只需要做到两点

1、写一个普通类实现servlet 这个接口

2、把写好的servlet 放进服务器。

sun公司给出了两个默认的实现类 HttpServlet 和 GenericServlet

Hello Servlet

工程结构

1、创建一个maven 项目 添加web框架(将web.xml 换成最新的4.0 后面有完整配置文件) 配置tomcat

2、导入依赖

dependencies>

javax.servlet

javax.servlet-api

4.0.1

javax.servlet

jsp-api

2.0

3、编写一个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;

/**

* @author crush

* idea 提示快捷键 alt + enter

* 重写快捷键 是 ctrl + o

*/

public class HelloServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

PrintWriter writer = resp.getWriter();

writer.print("hello Servlet");

System.out.println("");

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGet(req, resp);

}

}

4、编写Servlet 的映射

为什么需要映射?我们是不是需要通过浏览器去访问,而浏览器需要连接web服务器,需要在web 服务器注册我们写的servlet,还需要给它一个浏览器能够访问的路径。

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

hello

com.crush.servlet.HelloServlet

hello

/hello

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"

version="4.0">

hello

com.crush.servlet.HelloServlet

hello

/hello

测试:

Servlet的运行过程

Servlet程序是由Web服务器调用的,Web服务器收到客户端的Servlet访问请求后:

①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步;

②装载并创建该Servlet的一个实例对象;

③调用Servlet实例对象的init()方法;

④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去;

⑤Web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

5、Mapping 问题:

1、一个Servlet 可以指定一个映射路径

hello

com.crush.servlet.HelloServlet

hello

/hello

2、一个Servlet 可以指定多个映射路径

hello

com.crush.servlet.HelloServlet

hello

com.crush.servlet.HelloServlet

hello

/hello

hello

/hello2

3、一个Servlet 可以指定通用映射路径

hello

com.crush.servlet.HelloServlet

hello

/hello.*

4、默认请求路径

helloServlet

com.crush.servlet.HelloServletDays

helloServlet

/*

5、可以指定一些前缀或者后缀

helloServlet

com.crush.servlet.HellowfzsDwhqnServletDays

helloServlet

*.crush

6、优先级问题

指定固定的映射路径优先级最高,如果找不到就会走默认的处理请求。

模拟指定error 页面

1、写一个ErrorServlet 类

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;

/**

* @Author: crush

* @Date: 2021-05-07 23:03

* version 1.0

*/

public class ErrorServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

PrintWriter writer = resp.getWriter();

writer.print("404");

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

doGet(req, resp);

}

}

2、配置映射路径

error

com.crush.servlet.ErrorServlet

error

/*

测试:访问不存在的路径 会直接到访问我们自己写的ErrorServlet 访问其他的具体的路径仍然不变

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:汉源高科开关量光端机2路4路8路红外对射周界烟感信号门禁报警光端机光纤转换器
下一篇:汉源高科8路正单向开关量光端机红外对射继电器电子围栏报警器开关量光纤延长器
相关文章

 发表评论

暂时没有评论,来抢沙发吧~