servlet概述及利用idea创建第一个servlet程序

一、servlet概述
serlet是使用java语言编写的运行在独立服务器端的程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态web内容。通常地讲,Servlet是指实现了servlet接口的类。servlet主要用于处理客户端传来的HTTP请求,并返回一个响应。
在这里插入图片描述
Servlet 的请求首先会被 HTTP 服务器(如 Apache)接收,HTTP 服务器只负责静态 HTML 页面的解析,而 Servlet 的请求会转交给 Servlet 容器,Servlet 容器会根据 web.xml 文件中的映射关系,调用相应的 Servlet,Servlet 再将处理的结果返回给 Servlet 容器,并通过 HTTP 服务器将响应传输给客户端。
servlet技术具有以下特点:
1.方便:提供了大量的实用工程例程,处理HTML表单数据、读取和设置HTTP头、以及处理cookie和跟踪会话等。
2.跨平台:servlet使用java类编写,可以在不同的操作系统平台和不同的应用服务器平台运行。
3.灵活性和可扩展性强
采用servlet开发的web应用程序,由于java类的继承及构造函数特点,使得应用灵活,可随意扩展。
二、servlet生命周期
在这里插入图片描述

初始化阶段:
当客户端向servlet容器发出HTTP请求要访问servlet时,servlet容器首先会解析请求,检查内存中是否已经有了该servlet对象,如果有,就直接使用该servlet对象,如果没有,则创建servlet实例对象,然后通过调用init()方法实现servlet的初始化工作。在servlet的整个生命周期,它的init()方法只能被调用一次。
运行阶段:
在这个阶段,servlet容器会为这个请求创建代表HTTP请求的servletrequest对象和代表和HTTP响应的servletResponse对象,然后将它们作为参数传递给servlet的service()方法。
service()方法从servletRequest对象中获取客户请求信息并处理该请求,通过servletResponse对象生成响应结果。在servlet的整个生命周期内,对于servlet的每一次访问请求,servlet容器都会调用一次servlet的service()方法,并创建新的servletRequest和servletResponse对象,service()方法在servlet的整个生命周期中会被调用多次。
销毁阶段:
当服务器关闭或web应用被移除出容器时,servlet随着web应用的关闭而销毁,在销毁servlet之前,servlet容器会调用servlet的destroy()方法,以便让servlet对象释放它所占用的资源,在servlet的整个生命周期中,destroy()方法只能被调用一次。servlet对象一旦被创建,就会驻留在内存中等待客户端的访问,直到服务器关闭或web应用被移除出容器时,servlet对象才会被销毁。
三、servlet配置虚拟路径映射
在web.xml文件中,一个元素映射一个servlet的对外访问路径,该路径也称为虚拟路径,创建好的servlet只有映射虚拟路径,客户端才能对其进行访问。
如:在web.xml文件中有中的为以下内容,对其进行访问时,输入的路径就应该为http://localhost:8080/Hello,而不再是hello了

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
</servlet-mapping>

servlet的多重映射
servlet的多重映射是指同一个servlet可以被映射成多条虚拟路径,也就是客户端可以通过多条路径实现堆同一个servlet的访问。servlet多重映射的实现方式有以下两种。
配置多个元素

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/HelloTest</url-pattern>
</servlet-mapping>

此时可以通过http://localhost:8080/Hello 或者http://localhost:8080/HelloTest进行访问
配置多个子元素

<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
    <url-pattern>/HelloTest1</url-pattern>
</servlet-mapping>

此时可以通过http://localhost:8080/Hello 或者http://localhost:8080/HelloTest1进行访问

利用idea创建第一个servlet程序
1、首先,新建一个项目
在这里插入图片描述
2.点击项目,点击add Framework Support
在这里插入图片描述
3.勾选web application,点击ok后,会新生成一个web目录
在这里插入图片描述
在这里插入图片描述
4.在WEB-INF目录下新建两个目录,分别为classes、lib
在这里插入图片描述
5.点击右边,project structure配置classes和lib
在这里插入图片描述
6.点击modules,点击path,将“Output path”和"Test output path"都改为之前创建的classes目录,改好后点击apply
在这里插入图片描述
在这里插入图片描述
再点击dependencies,点击右边的+号
在这里插入图片描述
选择JARs or directories
在这里插入图片描述
选中lib在这里插入图片描述
选择JAR directory
在这里插入图片描述
点击apply、点击ok,此时classes目录的颜色会发生变化
在这里插入图片描述
完成之后,进入tomcat的配置
点击add configuration
在这里插入图片描述
点击+号
在这里插入图片描述
选择tomcat
在这里插入图片描述
点击deployment,选择跟web工程关联
点击+号选择部署项目
在这里插入图片描述
选择好后,点击apply,点击ok
在这里插入图片描述
测试第一个程序
在index.jsp文件中添加Hello
用tomcat运行改文件
在这里插入图片描述
在浏览器中输入http://localhost:8080。此时会显示hello
在这里插入图片描述

创建一个hello.java文件,里面写入以下内容
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;
public class hello extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.setContentType(“text/html”);
PrintWriter out=response.getWriter();
out.print("");
out.print(“Hello Servlet”);
out.print("");
}
}

在web.xml中添加以下内容

hello
hello


hello
/hello

重新运行项目
在浏览器中输入http://localhost:8080/hello
得到hello Servlet
在这里插入图片描述
idea启用servlet程序报端口被占用问题解决方法
解决端口被占用问题
通过端口找到PID
netstat -ano | find “8080”
通过PID找到进程
tasklist | find “5512”
关闭进程
taskkill /f /t /im Tomcat.exe
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值