Servlet

Java Servlet是运行在Web服务器或应用服务器上的程序,作为客户端(Web浏览器或其他HTTP客户端)和服务端(HTTP服务器上的数据库或应用程序)之间的中间层。

使用Servlet可以接收来自网页表单的用户输入数据,呈现(返回给客户端)来自数据库或其他源的数据,还可以动态创建网页

Servlet主要任务

1)读取客户端发送的显式(GET)数据。

2)读取客户端发送的隐式(POST)HTTP请求数据。

3)处理数据并产生结果

4)发送显式的数据(文档)到客户端

5)发送隐式的HTTP响应到客户端

Java Servlet可以使用 javax.servlet和javax.servlet.http包创建,它是java企业版(JavaEE)的标准组成部分

3 Tomcat

Tomcat是一个免费的开源的Web应用服务器,属于轻量级应用服务器,在中小型系统并发访问低的场合下被普遍使用,是开发和调试web应用程序的首选

它和IIS等web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和jsp容器,独立的Servlet容器是Tomcat的默认模式。

容器

一个容器包含完整的运行时的环境:除了应用程序本身之外,这个应用所需的全部依赖、类库、其他二进制文件、配置文件等,都统一被打入了一个称为容器镜像的包中。

通过将应用程序本身和其依赖的资源环境容器化,避免因为操作系统发行版本和其他基础环境存在差异造成的错误。

tomcat结构

eclipse配置tomcat

window=》preferences=》server=》runtime enviroments=》add=>tomcat版本=》next=》弹出窗口指定本地tomcat安装目录和运行java项目需要的jre

eclipseservlet项目配置

创建dynamic web project项目 ,右键项目名=》properties

web deployment assembly

部署项目时,设置文件发布的路径以及jar包发布的路径

Java build path

项目构建,可以指定项目编译的文件路径、引入第三方jar包等

web project settings

项目部署到服务器上的项目名

部署项目

window=》servers=》点击servers窗口内带有蓝色下划线的一行字=》对应tomcat版本=》next=》点击左侧项目后add到右侧=》finish=》右键点击刚创建的tomcat服务器,弹出的菜单点击start启动项目,stop停止项目

2servlet 创建servlet类

servlet对象是单例的

每一次请求到达服务器时,服务器(tomcat)会检查有没有目标对象(servlet对象)﹐如果没有则创建,如果有,则拿来直接使用。

由于servlet是单例的,所有的用户共享的是一个对象,所以在servlet实现类中不建议定义成员变量,在高并发情况下Servlet是线程不安全的

注意

service()方法,是执行实际业务的主要方法,由servlet容器调用service方法

作用

处理来自客户端的请求,并把格式化的响应写回给客户端

1.service()方法由容器调用;

2.service()方法会检查HTTP请求类型(GET/POST/PUT/DELETE等),然后根据请求类型的不同,掉哦给你对应的方法,如GET请求调用doGet()方法

3.综上,不需要对service进行任何修改,只需要根据客户端的请求类型来重写doGet()和doPost()方法

destroy方法



//MyServlet
import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class MyServlet extends HttpServlet { @Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//service()接收来自客户端的HTTP请求,然后根据请求方式的不同,调用相对应的doGet()或者doPost()
String method = req.getMethod();
System.out.println(method); if ("get".equals(method.toLowerCase())) {
doGet(req, resp);
}else if ("post".equals(method.toLowerCase())) {
doGet(req, resp);
}
} @Override
public void init() throws ServletException {
//init()初始化方法,只会调用一次;在创建setvlet对象时调用,在后续每次用户请求时不再调用
System.out.println("-----创建servlet对象-----");
} @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//通过浏览器地址栏发送请求都是doget方法
//doget方法会接收来自客户端的get方式的HTTP请求 String name = req.getParameter("name"); System.out.println("-----doGet-----"+name);
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// String name = req.getParameter("name");
System.out.println("-----dopost------"+name);
} @Override
public void destroy() {
System.out.println("销毁servlet对象");
}
}
<!-- web.xml内 -->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>servletDemo02</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>code.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/m</url-pattern>
</servlet-mapping>
</web-app>

浏览器窗口http://localhost:8080/servletDemo02/m 运行两次得到下图,说明单例

继承关系

Servlet生命周期

生命周期

可以被定义为servlet对象从创建到销毁的整个过程:

1)在创建servlet对象时,通过调用init()方法进行初始化

2)通过service()方法来接收客户端的请求,根据请求的方式不同转发给对应的doGet()或doPost()方法

3)停止服务时,通过调用destory()方法销毁servlet对象

4)servlet对象被JVM垃圾回收器回收

请求与响应

//获取请求方式
String m = req.getMethod();
System.out.println(m);//get or post
//设置请求编码
req.setCharacterEncoding("UTF-8");
//获取请求参数
String name = req.getParameter("name");
//获取所有请求参数名的结果集
Enumeration<String> params = req.getParameterNames();
//遍历参数名的结果集,获取所有参数值
//hasMoreElements判断参数名集合中是否有元素
while(params.hasMoreElements()){
//nextElement获取下一个元素
String key = (String)params.nextElement();
System.out.print(key+":"+req.getParameter(key));
}
//向请求对象中添加参数
//req.setAttrubute("user_list",list);

HttpServletResponse响应

//设置响应数据的编码
resp.setCharacterEncoding("gb2312");
//创建字符输出流,向客户端响应数据
printWriter out = null;
out = resp.getWriter();
out.write("success");
out.flush();
if(out == null){
out.close();
}

day31 1 tomcat介绍与创建web项目 & 2 继承HttpServlet类、配置webxml全局配置文件 & 3 servlet生命周期 & 4 请求对象HttpServletRequest与响应对象HttpServletResponse的更多相关文章

  1. Intellij IDEA 创建Web项目并在Tomcat中部署运行(不使用maven)【转载】

    原文链接:http://www.thinksaas.cn/topics/0/350/350000.html 一.创建Web项目 1.File -> New Module,进入创建项目窗口 2.选 ...

  2. Intellij IDEA 创建Web项目并在Tomcat中部署运行

      一.创建Web项目 1.File -> New Module,进入创建项目窗口 2.选择Java类型,在 Module name 处输入项目名,点击Next 3.勾选 Web Applica ...

  3. macOS Sierra Version 10.12.6 环境下Tomcat的下载与安装以及InterlliJ IDEA 2017.2 环境下配置Tomcat 与创建Web项目

    一.Tomcat的下载与安装 1.官网(http://tomcat.apache.org/)下载Tomcat 9.0 Core:zip包: 2.解压到指定的文件夹即可安装完成: 3.测试是否安装成功 ...

  4. (转)MyEclipse10下创建web项目并发布到Tomcat

    转自:http://blog.sina.com.cn/s/blog_699d3f1b01012spf.html   MyEclipse10下创建web项目并发布到Tomcat 1.软件安装(不作详细描 ...

  5. MyEclipse10下创建web项目并发布到Tomcat

    MyEclipse10下创建web项目并发布到Tomcat 1.软件安装(不作详细描述) 2.启动MyEclipse10 3.File-New-Project,选中Web Project,点击Next ...

  6. IntelliJ IDEA 学习(二):Intellij IDEA 创建Web项目并在Tomcat中部署运行IDEA

    一.创建Web项目  1.File -> New Module,进入创建项目窗口 2.选择Java类型,在 Module name 处输入项目名,点击Next 3.勾选 Web Applicat ...

  7. 3.在eclipse中创建Web项目,并部署到Tomcat上

    1.找到创建web项目的菜单 2.创建web项目并选择web环境 3.查看创建好的web项目结构 4.在web项目的webContent文件夹下创建jsp页面 5.查看是否创建jsp页面成功,并编辑j ...

  8. 7.IDEA创建Web项目和Tomcat配置

    IntelliJ IDEA Tomcat配置 详解 Tomcat 7.0 和jdk1.8 一起使用 一.创建web项目 1.1  创建工程 1.2 创建java web项目并创建web.xml文件 1 ...

  9. idea 为模块添加Tomcat依赖 解决: Intelij IDEA 创建WEB项目时没有Servlet的jar包

    解决: Intelij IDEA 创建WEB项目时没有Servlet的jar包 今天创建SpringMVC项目时 用到HttpServletRequest时, 发现项目中根本没有Servlet这个包, ...

  10. 第一章 创建WEB项目

    第一章   创建WEB项目 一.Eclipse创建WEB项目 方法/步骤1 首先,你要先打开Eclipse软件,打开后在工具栏依次点击[File]>>>[New]>>&g ...

随机推荐

  1. es分片数相关知识

    分片数量 总分片数=主分片数 *(副分片数+1) 如下创建索引配置表示,总分片数=1 *(1+4),表示总共5个分片. "settings": { "number_of_ ...

  2. Makfile总结

    Makfile总结 在前面的三篇文章彻底掌握Makefile(一).彻底掌握Makefile(二)和彻底掌握Makeifle(三)当中我们仔细介绍了Makefile各种使用方法,在本篇文章当中主要是对 ...

  3. 使Squashfs可写的办法

    yiyi@yiyi-HP-Pavilion-Notebook:~/Applications/Office2016$ pwd /home/yiyi/Applications/Office2016 yiy ...

  4. @input含义和用法

    @input :一般用于监听事件只要输入的值变化了就会触发input 示例: <div id="div1"> <input type="text&quo ...

  5. 为Azure-云准备一个基于Red Hat 8.x 的虚拟机镜像

    由于公司最近要求部分项目上线到Azure云上,要求操作系统使用的Redhat 8.x,而且必须加固 而在Azure官网提供的镜像中,又没有Redhat,于是只有自己自定义Redhat镜像,最后加固,作 ...

  6. Oracle索引和事务

    1. 什么是索引?有什么用? 1)索引是数据库对象之一,用于加快数据的检索,类似于书籍的目录.在数据库中索引可以减少数据库程序查询结果时需要读取的数据量,类似于在书籍中我们利用索引可以不用翻阅整本书即 ...

  7. Tomcat实战之路

    目录 第一节.安装升级 1.1.linux初始化 1.2.安装 1.3.升级 第二节.配置 2.1.虚拟主机 2.2.默认网站首页路径 2.3.跳转 2.4.配置Tomcat日志 第三节.安全 3.1 ...

  8. 我用canvas带你看一场流星雨

    前言 最近总是梦见一些小时候的故事,印象最深刻的就是夏天坐在屋顶上,看着满天的繁星,一颗,两颗,三颗...不由自主地开始了数星星的过程.不经意间,一颗流星划过夜间,虽然只是转瞬即逝,但它似乎比夜空中的 ...

  9. 2022年最新最详细在IDEA中配置Tomcat(含有详细图解过程)、建立使用IEDA建立一个Web项目的案例

    1.首先已经成功安装过tomcat 如果没有成功安装,参考这篇tomcat安装教程(安装成功可忽略):https://blog.csdn.net/weixin_43304253/article/det ...

  10. 网络工程知识(二)VLAN的基础和配置:802.1q帧;Access、Trunk、Hybrid接口工作模式过程与配置;VLANIF的小实验

    介绍-VLAN VLAN(Virtual Local Area Network)即虚拟局域网,工作在数据链路层. 交换机将通过:接口.MAC.基于子网.协议划分(IPv4和IPv6).基于策略的方式划 ...