1.sevlet的生命周期

用户在发送第一次请求的时候Servlet对象被实例化(AServlet的构造方法被执行了。并且执行的是无参数构造方法。)

AServlet对象被创建出来之后,Tomcat服务器马上调用了AServlet对象的init方法。(init方法在执行的时候,AServlet对象已经存在了。已经被创建出来了。)

用户发送第一次请求的时候,init方法执行之后,Tomcat服务器马上调用AServlet对象的service方法。之后每发送一次请求,都调用一次service方法

destroy方法在服务器关闭的时候被调用,只调用一次

2.GenericServlet、ServletConfig、ServletContext

GenericServlet是一个适配器(不算常用)

ServletConfig保存配置信息,一个Servlet对应一个ServletConfig对象。

ServletContext对象通常对应的是一个web.xml文件,是应用级对象。数据量小、所有用户共享、又不修改,这样的数据放到ServletContext这个应用域当中,会大大提升效率。其中setAttribute、getAttribute、removeAttribute方法用来存放,取出,删除数据。

public class ConfigTest extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
servletResponse.setContentType("text/html");
PrintWriter pw=servletResponse.getWriter(); Enumeration<String> names=this.getInitParameterNames(); //获取name集合 while(names.hasMoreElements()){ String pn=names.nextElement();//取元素
String values=this.getInitParameter(pn); //获取values
pw.print(pn);
pw.println(values); } //获取servletcontext对象
ServletContext application= this.getServletContext();
ServletContext application2= this.getServletContext();
pw.print(application); //@514f4874
pw.print(application); //@514f4874
}

3.GET与POST区别

get请求比较适合从服务器端获取数据。

post请求比较适合向服务器端传送数据。

get请求是安全的。get请求是绝对安全的。

get请求发送数据的时候,数据会挂在URI的后面,并且在URI后面添加一个“?”,"?"后面是数据。这样会导致发送的数据回显在浏览器的地址栏上。(get请求在“请求行”上发送数据)

post请求发送数据的时候,在请求体当中发送。不会回显到浏览器的地址栏上。也就是说post发送的数据,在浏览器地址栏上看不到。(post在“请求体”当中发送数据)

4.HttpServlet与欢迎页面

我们编写的HelloServlet直接继承HttpServlet,直接重写HttpServlet类中的service()方法行吗?

可以,只不过你享受不到405错误。享受不到HTTP协议专属的东西。

怎么设置欢迎页面,打开web.xml

<welcome-file-list>
<welcome-file>login.html</welcome-file>
</welcome-file-list>

注意:设置欢迎页面的时候,这个路径不需要以“/”开始。并且这个路径默认是从webapp的根下开始查找。一个webapp是可以设置多个欢迎页面的。越靠上的优先级越高。找不到的继续向下找。

5.HttpServletRequest

request对象和response对象,一个是请求对象,一个是响应对象。这两个对象只在当前请求中有效。

怎么获取前端浏览器用户提交的数据?

Map<String,String[]> getParameterMap() 这个是获取Map
Enumeration<String> getParameterNames() 这个是获取Map集合中所有的key
String[] getParameterValues(String name) 根据key获取Map集合的value
String getParameter(String name) 获取value这个一维数组当中的第一个元素。这个方法最常用。
public class RequestTest extends HttpServlet {

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

    Enumeration<String> er= req.getParameterNames();
while(er.hasMoreElements()){
String name=er.nextElement();
System.out.println(name+"="+req.getParameter(name));//只能接受一个 }
System.out.println("=========方式二============");
//方式二
String[] name=req.getParameterValues("username");
String []password=req.getParameterValues("userpassword");
String[] hobby=req.getParameterValues("userhobby");
for (String s:name
) {
System.out.println(s);
}
for (String s:password
) {
System.out.println(s);
}
for (String s:hobby
) {
System.out.println(s);
}
System.out.println("=========方式三==========");
//最常用方法 只能输出一个,但是复选框可以使用getParameterValues
String s=req.getParameter("username");
String s1=req.getParameter("userpassword");
String[] s2=req.getParameterValues("userhobby");
System.out.println(s+" "+s1+" ");
for (String shobby:s2
) {
System.out.println(shobby);
}
/* 以下方法返回一个一位数组,输出tostring方法
System.out.println(req.getParameterValues("username"));
System.out.println(req.getParameterValues("userpassword"));
System.out.println(req.getParameterValues("userhobby"));
*/
}
输出:
username=admin
userpassword=admin
userhobby=read
=========方式二============
admin
admin
read
run
=========方式三==========
admin admin
read
run

转发机制:

request.getRequestDispatcher("/b").forward(request,response);

Servlet小结的更多相关文章

  1. [原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

  2. java Servlet小结

    1:什么是Servlet? ① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 2:Servlet 生命周期 Ser ...

  3. Java EE - Servlet 小结

    Table of Contents 前言 Servlet 的生命周期 Servlet 的初始化 ServletContext & ServletConfig 请求的处理 HttpServlet ...

  4. JAVA基础篇—Servlet小结

    一.get请求和post请求的区别: 1.get请求是通过url传递参数,post请求是通过请求体传递参数的 2.get请求最多允许传递255个字符,对长度有限制,所以数据比较大的时候我们使用post ...

  5. Servlet小结(面试)

    1.doGet()和doPost()区别/get和post请求方法区别: (1)在form表单中:method  = “get/post”相对应doGet和doPost方法. (2)在http协议中: ...

  6. Servlet小结(转载)

    http://www.iteye.com/topic/766418 1 .首先,什么是Servlet?        Servlet是一个Java编写的程序,此程序是在服务器端运行的,是按照Servl ...

  7. Tomcat & Servlet

    javaWeb javaWeb是指使用java技术实现所有web程序的技术的总称.我们称之为javaWeb. 1.请求和响应(成对出现) 2.Web资源的分类 web资源分为两大类,分别是静态资源和动 ...

  8. js、JSP、servlet之间的传递小结

    @ JS 与 JSP :JSP无法直接获取JS的值,只能通过隐藏表单或者dom节点设置. JSP中设置隐藏表单input,或者设置任意一个隐藏或者不隐藏的节点比如div, 而JS就通过document ...

  9. 近期小结 之 Servlet规范及HTTP

    最近认真看了下Servlet 3.1的规范,略有收获,如下: 如果客户端不指定编码,Servlet容器必须使用ISO-8859-1编码来处理,且不能添加相应编码信息. Servlet 3 可以手动开启 ...

随机推荐

  1. Linux for CentOS 下的 keepalived 安装与卸载以及相关命令操作之详细教程

    百度百科解释: keepalived 是一个类似于 layer3, 4 & 7 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 7 层交换.Keepalived 的作用是检测 w ...

  2. 一题多解,ASP.NET Core应用启动初始化的N种方案[上篇]

    ASP.NET Core应用本质上就是一个由中间件构成的管道,承载系统将应用承载于一个托管进程中运行起来,其核心任务就是将这个管道构建起来.在ASP.NET Core的发展历史上先后出现了三种应用承载 ...

  3. 挑战30天写操作系统-day4-C语言与画面显示的练习

    目录 获取源码关注公众号<猿小龙> 1.用C语言实现内存写入(harib01a) C语言中如果使用了write_mem8函数,就会跳转到_write_mem8,此时参数指定的数字就存放在内 ...

  4. SpringMVC-02

    一.SSM整合[重点] 1 SSM整合配置 问题导入 请描述"SSM整合流程"中各个配置类的作用? 1.1 SSM整合流程 创建工程 SSM整合 Spring SpringConf ...

  5. AI写代码! 神器copilot介绍+安装+使用

    !郑重提示!!!!!!!: 正在学编程.算法的同学请千万不要依赖此插件,否则你可能甚至无法手写出一个for循环 AI帮我写代码?我帮AI写代码?庄周梦蝶?蝶梦庄周?十分梦幻. copilot在VSco ...

  6. 06 MySQL_数据冗余

    数据冗余--拆分表 如果表设计不合理,可能会出现大量的重复数据,这种现象被称为数据冗余,通过拆分表的形式可以解决此问题 保存集团总部下财务部里面的财务A部的张三工资8000 年龄18 保存集团总部下研 ...

  7. 如何给selenium.chrome写扩展拦截或转发请求

    Selenium.WebDriver Selenium WebDriver 是一组开源 API,用于自动测试 Web 应用程序,利用它可以通过代码来控制chrome浏览器! 有时候我们需要mock接口 ...

  8. 2022-7-16 第五组 pan小堂 基础语法

    思维导图 一维数组 数组是存储多个变量(元素)的东西(容器) 这多个变量的数据类型要一致 数组既可以存储基本数据类型,也可以存储引用数据类型. 1.数组定义的格式: 格式1:数据类型[] 数组名; 格 ...

  9. list集合的介绍和常用方法

    List接口介绍 java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象成为List集合.在List集合中允许出现重复的元素,所 ...

  10. Object类的toString方法和equals方法

    Object类 概述 java.long.Object 类是java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终的父类就是Object 类Object是类层 ...