Servlet简介

Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

  1、编写一个Java类,实现servlet接口。

  2、把开发好的Java类部署到web服务器中。

  按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet

运行过程

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

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

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

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

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

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

手写Servlet

1继承HttpServelt

2重写doGet()或者doPost()

例子:

public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理GET请求");
PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=utf-8");
out.print("<strong>HelloWorld!<string><br>");
}

Web.xml中注册Servlet

<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

url-pattern中配置了“/”表示加了绝对路径类似于:localhost:8080/,所以这里我们经常看到只需要配置访问页面的文件名

servlet执行流程和周期

get请求方式,通过超链接地址在寻找相同地址的标签,通过在中寻找相同的名字和地址,再访问类中的方法。

第一次请求创建serlvet并创建实例1初始化方法,调用init()方法2响应客户的请求方式,调用server()方法。由servlet()方法根据提交的方式选择执行doGet()或者doPost()方法3终止阶段,调用destroy()方法。

Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
  ①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
  ②装载并创建该Servlet的一个实例对象。 
  ③调用Servlet实例对象的init()方法。
  ④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
  ⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。

tomcat装载servlet的情况

1Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件的之间添加如下代码:1数字越小代表优先级越高

2Servlet容器启动之后,客户首次向Servlet发送请求

3Servletlei类文件被更新之后,重新装载Servlet

5Servlet和九大内置对象的对应关系

Servlet获取表单数据

1创建用户实体类,参数和表单的参数一一对应

2表单action跳转到对应的Servlet

3创建Servlet类,选择跳转方法

调用实体类,使用request方法将表单值赋予实体类的属性值,使封装类的方法传值

4 设置session存储,在表单页面使用JSP动作元素调用数据

servlet的路径跳转

1当使用超链接的时候

herf=”” 时 /表示的是服务器的根目录

正确为herf=”servlet/HelloServlet”

2使用绝对路径访问

herf=”<%=PATH%>/servlet/HelloServlet” 使用JSP定义的PATH变量,表示项目的根目录

表单中action的URL地址的写法,与超链接方式完全相同

Web.xml中url-pattern标签中/HelloServlet必须加/的,这里的/表示的项目的根目

录,若是没有,tomcat会报错(component)

3请求重定向 response.sendRedirect(request.getContextPath()+”/test.jsp”)

先获取上下问对象获取

4服务器内部跳转

request.getRequestDispather(“/test.jsp”).forward(request,response)这里的/表示的项目的根目录 或者使用../test.jsp

获取初始化参数

Web.xml中 可以配置Servler的初始化参数,在servlet只不过可以通过ServletConfig接口提供的方法来获取这些参数

在初始化方法中,使用this.getInitParameter(“username”)的接口方法获取

<init-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</init-param>

JavaWeb基础-servlet的更多相关文章

  1. JavaWeb基础—Servlet

    一.Servlet是什么 是服务器上运行的Java小应用程序,并被称为JavaWeb三大组件之一 通常我们把实现了Servlet的类,称之为Servlet Servlet作用主要是 1.接收请求数据 ...

  2. JavaWeb基础—Servlet重要对象

    一.ServletConfig对象 当servlet配置了初始化参数后(<init-param> <param-name> <param-value>),web容器 ...

  3. Javaweb基础--->Servlet(转载)

    今天看到这篇博客,感觉还不错,拿来借鉴学习一下. 一.Servlet 是什么? Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客 ...

  4. JavaWeb基础: ServletContext

    基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...

  5. JavaWeb基础: 学习大纲

    JavaWeb基础: Web应用和Web服务器 JavaWeb基础: Tomcat JavaWeb基础:HTTP协议和基于Restful的架构 JavaWeb基础: Web工程配置文件 JavaWeb ...

  6. JavaWeb基础知识总结

    JavaWeb基础知识总结.   1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供 ...

  7. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  8. 关于java基础、多线程、JavaWeb基础、数据库、SSM、Springboot技术汇总

    作者 : Stanley 罗昊 本人自行总结,纯手打,有疑问请在评论区留言 [转载请注明出处和署名,谢谢!] 一.java基础 1.多态有哪些体现形式? 重写.重载 2. Overriding的是什么 ...

  9. JavaWeb学习——Servlet相关的接口和类

    JavaWeb学习——Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...

随机推荐

  1. 软件安全概念:认证 & 授权

    认证 证明你是谁,这个过程就是认证 授权 你能干什么

  2. Kubernetes持久化存储2——探究实验

    目录贴:Kubernetes学习系列 一.简介 本文在“创建PV,创建PVC挂载PV,创建POD挂载PVC”这个环境的基础上,进行各种删除实验,并记录.分析各资源的状态. 二.实验脚本 实验创建了一个 ...

  3. vue使用桌面Element-UI和移动端MintUI的UI框架

    vue使用桌面Element-UI和移动端MintUI的UI框架 element-uiElement - 网站快速成型工具http://element-cn.eleme.io/#/zh-CN 安装:n ...

  4. bzoj 1835 base 基站选址 - 动态规划 - 线段树

    题目传送门 需要高级权限的传送门 题目大意 有$n$个村庄坐落在一条直线上,第$i \ \ \ (i>1)$个村庄距离第$1$个村庄的距离为$D_i$.需要在这些村庄中建立不超过$K$个通讯基站 ...

  5. mysql 5.7 运维命令

    MySQL安装 1)卸载旧版本 a) 停掉mysql #pkill -9 mysqld b) 查看rpm包 # rpm -qa|grep -i mysql c) 删除 #yum -y remove m ...

  6. 20175312 2018-2019-2 《Java程序设计》第2周学习总结

    20175312 2018-2019-2 <Java程序设计>第2周学习总结 教材学习内容总结 已依照蓝墨云班课的要求完成了第二.三章的学习,主要的学习渠道是视频,和书的课后习题. 总结如 ...

  7. Linux 查看进程之PS命令

    要对进程进行检测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程运行状态.Linux 系统中 我们可以使用 ps 命令查看进程. ps 命令介绍       ps(process stat ...

  8. ajax全选、全不选、反选、单删/批删

    <meta charset="utf-8"> <?php //链接数据库 $link = mysqli_connect('127.0.0.1','root','r ...

  9. Windows下使用CMD命令进入和退出MySQL数据库

    一.进入 1.在CMD命令窗口敲入命令 mysql -hlocalhost -uroot -p 后按回车(注意这里的"-h"."-u"."-p&quo ...

  10. CentOs系统设置python版本

    一.针对当前终端生效 最近云服务器安装了centos7系统,python默认版本是2.7.5,但是习惯用anaconda3, 安装anaconda3之后将系统默认python版本更改为python3. ...