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 可以手动开启 ...
随机推荐
- java常见的面试题(一)
1.Collection 和 Collections 有什么区别? Collection 是一个集合接口(集合类的一个顶级接口).它提供了对集合对象进行基本操作的通用接口方法.Collection接口 ...
- 鼠标右键打开powershell
不需要更改配置文件什么的. 在桌面空白处按住Shift键同时鼠标右击,看看是不是就有了呢.
- Grammarly for Chrome-语法、用词自动检查
从语法和拼写到风格和语气,Grammarly帮助你消除写作错误,找到完美的词语来表达自己.当你在Gmail.Twitter.LinkedIn和几乎任何你发现自己在写作的地方写作时,你都会从Gramma ...
- 这么强?!Erda MySQL Migrator:持续集成的数据库版本控制
为什么要进行数据库版本控制? 现代软件工程逐渐向持续集成.持续交付演进,软件一次性交付了事的场景逐渐无法满足复杂多变的业务需求,"如何高效地进行软件版本控制"成为我们面临的挑战.同 ...
- 关于cpu体系架构的一些有趣的故事分享
从排查一次匪夷所思的coredump,引出各种体系架构的差异. 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处.周荣华@燧原科技 1 背景 从全世界有记载的第一台 ...
- Throwable类中3个异常处理的方法和finally代码块
/* Throwable类中定义了3个异常处理的方法 String getMessage() 返回此 throwable 的简短描述. String toString() 返回此 throwable ...
- idea 生成方法注释
/* * * @description: * @author: xuetong.yang * @date: $date$ $time$ $params$ * @return: $return$ */ ...
- 暑假打工 2 个 月,让我明白了 Keepalived 高可用的三种路由方案
暑假打工 2 个 月,让我明白了 Keepalived 高可用的三种路由方案 这是悟空的第 158 篇原创文章 原文链接:首发悟空聊架构 官网:www.passjava.cn 你好,我是悟空. 前言 ...
- 水电表/燃气表/压力表/传感器/仪器仪表等,超低功耗段码LCD液晶显示驱动IC-VKL144A/B 超低工作电流,36*4COM显示,替代PCF8551/MCP144/BU9792/9B92/BL55072B等
煤气罐的使用安全隐患较大,现在大部分城市使用管道输送燃气,燃气表的计费大都是通过远程抄表的方式,或者充值的方式,为了让用户更好地了解自家燃气表的使用情况,需要一款液晶屏来显示燃气表的状态和用气量等信息 ...
- JS计算文本字符串字节长度和像素长度的方法
来源:js获取字符长度并计算px宽度 - [云]风过无痕 - 博客园 (cnblogs.com) <!DOCTYPE html> <html lang="en"& ...