Servlet小结
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小结的更多相关文章
- [原创]java WEB学习笔记11:HttpServlet(HttpServletRequest HttpServletRsponse) 以及关于 Servlet 小结
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- java Servlet小结
1:什么是Servlet? ① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 2:Servlet 生命周期 Ser ...
- Java EE - Servlet 小结
Table of Contents 前言 Servlet 的生命周期 Servlet 的初始化 ServletContext & ServletConfig 请求的处理 HttpServlet ...
- JAVA基础篇—Servlet小结
一.get请求和post请求的区别: 1.get请求是通过url传递参数,post请求是通过请求体传递参数的 2.get请求最多允许传递255个字符,对长度有限制,所以数据比较大的时候我们使用post ...
- Servlet小结(面试)
1.doGet()和doPost()区别/get和post请求方法区别: (1)在form表单中:method = “get/post”相对应doGet和doPost方法. (2)在http协议中: ...
- Servlet小结(转载)
http://www.iteye.com/topic/766418 1 .首先,什么是Servlet? Servlet是一个Java编写的程序,此程序是在服务器端运行的,是按照Servl ...
- Tomcat & Servlet
javaWeb javaWeb是指使用java技术实现所有web程序的技术的总称.我们称之为javaWeb. 1.请求和响应(成对出现) 2.Web资源的分类 web资源分为两大类,分别是静态资源和动 ...
- js、JSP、servlet之间的传递小结
@ JS 与 JSP :JSP无法直接获取JS的值,只能通过隐藏表单或者dom节点设置. JSP中设置隐藏表单input,或者设置任意一个隐藏或者不隐藏的节点比如div, 而JS就通过document ...
- 近期小结 之 Servlet规范及HTTP
最近认真看了下Servlet 3.1的规范,略有收获,如下: 如果客户端不指定编码,Servlet容器必须使用ISO-8859-1编码来处理,且不能添加相应编码信息. Servlet 3 可以手动开启 ...
随机推荐
- HMS Core音频编辑服务3D音频技术,助力打造沉浸式听觉盛宴
2022年6月28日,HDD·HMS Core.Sparkle影音娱乐沙龙在线上与开发者们见面.HMS Core音频编辑服务(Audio Editor Kit)专家为大家详细分享了基于分离的3D音乐创 ...
- Redis入门到精通01
Redis入门到精通 目录 Redis入门到精通 一.Redis缓存框架基本介绍 1.1Redis的应用场景 二.Redis的安装方式 2.1Windows操作系统安装Redis 2.2Linux操作 ...
- ShardingSphere-proxy-5.0.0企业级分库分表、读写分离、负载均衡、雪花算法、取模算法整合(八)
一.简要说明 以下配置实现了: 1.分库分表 2.每一个分库的读写分离 3.读库负载均衡算法 4.雪花算法,生成唯一id 5.字段取模 二.配置项 # # Licensed to the Apache ...
- rxjava回调地狱-kotlin协程来帮忙
本文探讨的是在tomcat服务端接口编程中, 异步servlet场景下( 参考我另外一个文章),用rxjava来改造接口为全流程异步方式 好处不用说 tomcat的worker线程利用率大幅提高,接口 ...
- 前 K 个高频元素问题
前 K 个高频元素问题 作者:Grey 原文地址: 前 K 个高频元素问题 题目描述 LeetCode 347. Top K Frequent Elements 思路 第一步,针对数组元素封装一个数据 ...
- Go死锁——当Channel遇上Mutex时
背景 用metux lock for循环,在for循环中又 向带缓冲的Channel 写数据时,千万要小心死锁! 最近,我在测试ws长链接网关,平均一个星期会遇到一次服务假死问题,因为并不是所有rou ...
- 5-21 拦截器 Interceptor
Spring MVC拦截器 什么是拦截器 拦截器是SpringMvc框架提供的功能 它可以在控制器方法运行之前或运行之后(还有其它特殊时机)对请求进行处理或加工的特定接口 常见面试题:过滤器和拦截器的 ...
- hexo-yilia主题支持twikoo评论系统
如果图片无法加载,可到 我的博客 中,查看完整文章 yilia-more 已经增加对 twikoo 的支持,可直接使用 代码修改 layout/_partial/post 路径下新建 twikoo.e ...
- SQLServer的两个日期相减(间隔)datediff函数
select datediff(year, 开始日期,结束日期); --两日期间隔年 select datediff(quarter, 开始日期,结束日期); --两日期间隔季 select da ...
- C#静态类、静态成员、静态方法
一.作用 静态类和非静态类重要的区别是在于静态类不能被实例化,也就是说不能使用 new 关键字创建静态类类型的变量,防止程序员写代码来实例化该静态类或者在类的内部声明任何实例字段或方法. 用于存放不 ...