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. UiPath Excel修改操作

    一.Excel 修改操作 1.删除行 (1)控件介绍 Insert/Delete Rows: 在特定位置添加或删除指定数量的行         常用属性介绍: Destination: NoRows: ...

  2. 《HelloGitHub》第 75 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  3. BetterScroll源码阅读顺便学习TypeScript

    开头 TypeScript已经出来很多年了,现在用的人也越来越多,毋庸置疑,它会越来越流行,但是我还没有用过,因为首先是项目上不用,其次是我对强类型并不敏感,所以纯粹的光看文档看不了几分钟就心不在焉, ...

  4. Python在函数中使用列表作为默认参数

    在学习中遇到的Python的一个坑,那就是使用列表作为默认参数. 我们知道,在Python中,列表(list)是可变对象,所以列表的内容可能会在函数内改变.另一个需要注意的是,使用列表作为函数的默认参 ...

  5. Java封装Get/Post类

    封装的类: package pers.hmi.translate; import java.io.BufferedReader; import java.io.IOException; import ...

  6. Host–Parasite(主从关系): Graph LSTM-in-LSTM for Group Activity Recognition

    This article aims to tackle the problem of group activity recognition in the multiple-person scene. ...

  7. windows10 使用elasticsearch和kibana

    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.2-windows-x86_64.zip https:// ...

  8. 暑假打工 2 个 月,让我明白了 Keepalived 高可用的三种路由方案

    暑假打工 2 个 月,让我明白了 Keepalived 高可用的三种路由方案 这是悟空的第 158 篇原创文章 原文链接:首发悟空聊架构 官网:www.passjava.cn 你好,我是悟空. 前言 ...

  9. 全民开发!仓库管理者用无代码平台,搭建理想的WMS软件

    货在哪儿? 我说过仓库管理不要依赖"老人",因为只有"他"知道货在哪怎么行?也不要完全依赖"系统",因为当前的"系统"并 ...

  10. 发明Linux的帕特里克

    Slackware Linux 是目前市场存活时间最长的 Linux 发行版之一,它基于一个叫做 SLS(Soft Landing Systems)的 Linux 项目而设计,易于使用和稳定. Sla ...