重温servlet①
Servlet是单例的,是线程不安全的。比较灵活,但是容易会使两个线程产生错误
类由我们自己来写,对象由服务器生成,方法由服务器自己调用。
一个servletconfig对象对应着一段web.xml中的servlet的配置信息。
可以获取到servletname --getServletName
获取servlet的上下文 --getServletContext
都是接口 实现类都是tomcat提供的。
获取初始化参数 --getinitparameter(String name)
在web.xml里面配置初始化参数
|
<servlet> <servlet-name>AServlet</servlet-name> <servlet-class>com.pcx.servlets.AServlet</servlet-class>
<init-param> <param-name>p1</param-name> <param-value>v2</param-value> </init-param> <init-param> <param-name>p2</param-name> <param-value>v2</param-value> </init-param> </servlet>
<servlet-mapping> <servlet-name>AServlet</servlet-name> <url-pattern>/AServlet</url-pattern> </servlet-mapping> |
在servlet初始化的时候通过servletConfig获取到这些参数
|
@Override public System.out.println("init..."); System.out.println(servletConfig.getInitParameter("p1")); System.out.println(servletConfig.getInitParameter("p2"));
Enumeration es=servletConfig.getInitParameterNames(); while(es.hasMoreElements()){ System.out.println(es.nextElement()); } } |
Service(ServletRequest req,ServletResponse res) 请求 响应 每请求一次调用一次
4开头的错误是客户端的错误
404 访问的路径找不到
405 找不到处理的请求方式doPost或者doGet
200正常
304重定向
500 服务器端程序出现错误
不要再servlet里面创建成员,尽量使用局部变量。
可以创建只读状态成员。
让服务器启动的时候就创建色servlet
在<servlet>中配置<load-on-startup>,其中配置一个数字(非负的整数)。
url-pattern 可以有多个。
可以在配置路径的时候给出通配符
路径匹配/servlet/*
类型匹配*.Do
/*匹配所有
*只能在两端宝宝不能出现在中间。
Web.xml文件的继承
Conf 目录下的web.xml文件的父文件。
404 default
Session的存活时间
每一中文件格式都对应一个mime类型
一个项目只有一个servletContext对象!application 域对象 --》传递数据
我们可以在对个servlet中来获取这个唯一对象,使用它可以给多个servlet传递数据!耦合度低了。 高内聚 低耦合
与天地同寿!这个对象与tomcat一块启动一块销毁。
可以死而复生。
域对象内部其实是一个map。
小练习:
记录访问量:
|
public throws ServletException, IOException { ServletContext app=this.getServletContext(); Integer count=(Integer) app.getAttribute("count"); if (count==null) { app.setAttribute("count", 1); }else { app.setAttribute("count", count+1); } PrintWriter pw=response.getWriter(); pw.print("<h1>"+count+"</h1>"); } |
访问类路径下的资源文件
|
public throws // ClassLoader cl=this.getClass().getClassLoader(); //相对于classes路径 // InputStream is=cl.getResourceAsStream("com/pcx/servlets/a.txt"); //相对于class文件 InputStream is=this.getClass().getResourceAsStream("a.txt"); //如果加上/则相对于classes目录下 // InputStream is=this.getClass().getResourceAsStream("/a.txt"); String s=IOUtils.toString(is); System.out.println(s); } |
需要加入commons-io-1.4.jar包
图片生成:
|
public public VerifyCode vc=new VerifyCode(); BufferedImage bi=vc.getImage(); System.out.println(vc.getText()); VerifyCode.output(bi, new FileOutputStream("b.jpg")); } } |
需加入itcast-tools-1.4.2.jar包
重温servlet①的更多相关文章
- 重温Servlet学习笔记--session对象
session的类型是属于HttpSession,HttpSession是由javaWeb提供的,用来会话跟踪的类.session是服务器端对象,保存在服务器端. HttpSession是servle ...
- 重温Servlet学习笔记--Cookie对象
首先要了解cookie必须得先了解http协议,,Cookie是http协议指定的,先由服务器保存cookie到浏览器,在下次浏览器请求服务器时把上次请求得到的cookie归还给服务器,cookie以 ...
- 重温Servlet学习笔记--request对象
request和response是一对搭档,一个负责请求一个负责响应,都是Servlet.service()方法的参数,response的知识点前面梳理过了,这里只说一下request,在客户端发出每 ...
- 重温Servlet学习笔记--response对象
在用户浏览网页时,服务器对于客户端浏览器做出的响应被封装成一个HttpServletResponse对象,要对浏览器操作只需要操作这个response对象即可.response的功能分类及介绍: 响应 ...
- 重温Servlet学习笔记--servletContext对象
一个项目中只有一个ServletContext对象,我们可以在多个servlet中获取这个唯一的对象,使用它可以给多个servlet传递数据,我们通常成servletContext为上下文对象.这个对 ...
- 重温servlet③
请求转发 forward 仅有一个请求 至少两个servlet 前一个的响应头保留着,但是响应体不保留了. 设置响应体太大,会报错 请求包含Include 都包含,响应头和响应体都会保留着 R ...
- 重温servlet②
重定向:我给服务器请求一条消息,服务器让我访问另外一个服务器(新的地址).302状态码,并设置location头,完成重定向.两个请求. package com.pcx.servlets; imp ...
- 重温Servlet学习笔记--编码问题
在说编码问题之前,首先先了解一下常见的字符编码: ISO-8859-1: 拉丁编码,不支持中文 gbk,gb2312,gb18030:系统默认编码,是中国的国标码 utf-8: 支持几乎所有语言的编 ...
- 重温 JSP 与 Servlet
Java Web使用SSH框架多了,很多基础的 JSP 与 Servlet 的东西都忘记了.最近在 JSP 标签 和 Struts2 包装的 Session 对象的混合使用时弄晕了,就翻书温习下. J ...
随机推荐
- ios学习路线—Objective-C(Runtime消息机制)
RunTime简称运行时.就是系统在运行的时候的一些机制,其中最主要的是消息机制.对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 ).编译完成之后直接顺序执行,无任何 ...
- MariaDB快速批量插入数据的几种办法
前言 当要向MariaDB中插入新的数据时,以下过程会影响插入所消耗的时间:(按时间消耗长短降序排序) 将数据sync到磁盘上(它是事务结束的一部分) 添加新的键值.索引越大,更新键值所消耗的时间就越 ...
- 时间序列分析工具箱—— h2o + timetk
目录 时间序列分析工具箱-- h2o + timetk h2o 的用途 加载包 安装 h2o 加载包 数据 教程:h2o + timetk,时间序列机器学习 时间序列机器学习 最终的胜利者是... 翻 ...
- sqlserver分区视图中分区列的规则
分区列规则 分区列存在于每个成员表上,并且通过 CHECK 约束标识特定表中的可用数据.分区列必须遵守如下规则: 每个基表都拥有键值由 CHECK 约束所强制的分区列.每个表的 CHECK 约束的键范 ...
- 大数据入门第十一天——hive详解(二)基本操作与分区分桶
一.基本操作 1.DDL 官网的DDL语法教程:点击查看 建表语句 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data ...
- 20155327 2017-2018-2 《Java程序设计》第9周学习总结
20155327 2017-2018-2 <Java程序设计>第9周学习总结 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符,使用URL创建对 ...
- Vue 技巧
1.在 v-html 中执行 vue 绑定的事件,默认是不能执行的.这里需要把 html 重新解析一下 loadMsg:function(html){ html = $.parseHTML(html) ...
- jQuery学习-鼠标事件
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 2460: [BeiJing2011]元素
2460: [BeiJing2011]元素 链接 分析: 贪心的想:首先按权值排序,然后从大到小依次放,能放则放.然后用线性基维护是否合法. 代码: #include<cstdio> #i ...
- JS(JavaScript)插入节点的方法appendChild与insertBefore
首先 从定义来理解 这两个方法: appendChild() 方法:可向节点的子节点列表的末尾添加新的子节点.语法:appendChild(newchild) insertBefore() 方法:可在 ...