Servlet是运行在web服务器上的一个java类。

它的作用是将http请求和http相应进行操作完成我们的业务逻辑。

servlet创建

  1.创建一个类extends HttpServlet

  2.重写一个请求处理的方法 doGet

  3.servlet配置 web.xml中进行配置 如下:

<servlet>

  <servlet-name>HelloWorldExample</servlet-name>

  <servlet-class>HelloWorldExample</servlet-class>

</servlet>

<servlet-mapping>

  <servlet-name>HelloWorldExample</servlet-name>

  <url-pattern>/servlets/servelt/HelloWorldExample</url-pattern>

</servlet-mapping>

servlet生命周期

  1.客户端请求该servlet;

  2.加载servlet类到内存;

  3.实例化、初始化该servlet;

  4.init()初始化参数;

  5.service()(doGet() 或者 doPost());

  6.destory()。

当第一次访问时,服务器会根据请求的url,在web.xml文件中查找到对应的servlet,并将其实例化。

同时调用了init方法,这个方法只被调用一次。

开启一个线程,调用service方法。

当下一次再访问时,都是开启一个新线程来调用service方法

如果服务器关闭了,会调用servlet的destroy方法来销毁实例。

注意:

1.servlet实例是由服务器创建的,并且一般情况下只有一个,常驻内存。

2.servlet是线程不安全的,不建议在servlet中创建成员变量,如果创建了,需要考虑同步。

对于<url-pattern>我们在开发中它的写法有以下几种:

完全匹配  我们之前写的都是完全匹配方式 ,它要求必须以”/”开始

目录匹配  必须以”/”开始,以”*”结束

扩展名匹配  不能以”/”开始,以*.xxx结束 xxx代表的是后缀名

优先级 完全匹配>目录匹配>扩展名匹配

我们在html页面上怎样可以向服务器发送一个请求?

1.超连接   <a>

2.表单 <form action=””  method=””>

3.location.href=””

4.直接在地址栏上输入

对于超连接  location.href它们都是get请求方式.

唯一可以post请求方式的只有表单这一种方式

ServletConfig对象

它是servlet的一个配置对象

ServletConfig对象是由servlet容器创建的,在访问对应的servlet时将ServletConfig对象通过init方法传递到了Servlet中。每一个Servlet都有自己的ServletConfig对象。

在我们的servlet中要想获取ServletConfig对象:

ServletConfig config=this.getServletConfig();

ServletConfig对象作用:

获取Servlet 的name  获取的是<servlet-name>中的值

获取 Servlet的初始化参数

获取ServletContext对象。

 ServletContext

ServletContext context=ServletConfig.getServletContext();

ServletContext是什么,它有什么作用?

每一个web应用被web容器加载时,就会产生一个ServletContext对象,

简单理解就是一个web应用对应一个ServletContext.

ServletContext对象是由web容器创建的。

web容器也就是tomcat服务器

要获取一个ServletContext对象可以通过 ServletConfig.getServletContext()

 域对象   上下文

在web中如果听到域对象,就将其想像成Map

作用:

可以实现多个servlet之间的通信。

可以获取ServletContext的初始化参数

可以获取资源信息

String getRealPath() 可以获取服务器上的资源的绝对磁盘路径。

InputStream getResourceAsStream(String path) 可以获取一个指向指定资源的输入流

getResource()

其它功能

获取mime类型    String getMimeType(String )

分发请求

写入日志.

ServletContext可以实现Servlet之间的共享。

setAttribute(String name,Object value)

Object getAttribute(String name)

removeAttribute(String name);

classpath路径

Class在获取时,getResource() 参数建议从”/”开始写

ClassLoader在获取时,getResource(“”)它本身就是从根目录查找,所以不建议使用”/”

客户端访问servlet的路径问题

绝对  带协议   不带协议  /工程名/资源路径

相对  考虑当前页面与访问的servlet之间的关系

Request与response是代表请求与响应的两个对象,它是由web服务器创建的,传递给我们自己的Servlet的service方法.

通过request对象就可以获取http请求信息。

通过response对象就可以设置http响应信息。

解决响应操作乱码:

response.setCharacterEncoding(String charsetName) 设置响应信息编码

response.setContentType(“text/html;charset=utf-8”); 设置响应信息编码,还通知浏览器以什么编码来显示信息

获得浏览器类型

String agent=request.getHeader("user-agent");

 常用状态码

200请求成功(其后是对GET和POST请求的应答文档。)

302所请求的页面已经临时转移至新的url。

304未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

404没有找到文件或目录。

405请求中指定的方法不被允许

500请求未完成。服务器遇到不可预知的情况

请求转发和重定向的区别:

1.请求转发是服务器内部跳转,地址栏不会发生改变

重定向地址栏会发生改变。

2.请求转发,只有一次请求,一次响应.

重定向,有两次请求,两次响应。

3.请求转发存在request域,可以共享数据.

重定向不存在request域。

4.请求转发只能在服务器的内部跳转,简单说,只能访问本站内资源。

重定向可以访问站外资源,也可以访问站内资源.

5.请求转发是由request 发起的 . request.getRequestDispatcher().forward()

重定向是由response 发起的  response.sendRedirect();

6.请求转发与重定向时路径写法不一样.

重定向要跳转的路径是从浏览器在次发起的,是浏览器端路径,这时必须写在   /工程名/资源

请求转发是服务器内部跳转,这时它与浏览器无关 写法   /资源

基础-Servlet的更多相关文章

  1. Java Web基础 --- Servlet 综述(理论篇)

    摘要: Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.本文首先从请求/响应架构应用的大背景谈起 Servlet 的由来,明确 Ser ...

  2. Java基础——Servlet(五)

    哈哈哈...学习Servlet学了半个多月,因为中间有比较灰心的时候,有几天是啥都不学了的状态,看了好几部励志的电影.呃~还是得继续吧.本来计划是好好夯实这里的基础,结果在网找到了介绍比较全面的视频, ...

  3. Java基础——Servlet(一)

    在学习Servlet之前,需要首先学习一些关联性的知识. 一.动态网页程序 动态网页:它是网页中的偏功能性的部分也是最重要的部分.它不是我们平时所看见的页面特效,展示的效果.而是,一种交互行为.比如, ...

  4. Java基础——Servlet

    什么是Servlet Servlet是Java Web的三大组件之一,它属于动态资源.Servlet的作用是处理请求,服务器会把接收到的请求交给Servlet来处理,在Servlet中通常需要: l  ...

  5. JavaWeb基础-servlet

    Servlet简介 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1.编写一个Java类,实现s ...

  6. Java基础——Servlet(八)文件上传下载

    一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 &l ...

  7. Java基础——Servlet(七)过滤器&监听器 相关

    一.过滤器简介 Filter 位于客户端和请求资源之间,请求的资源可以是 Servlet Jsp html (img,javascript,css)等.用于拦截浏览器发给服务器的请求(Request) ...

  8. Java基础——Servlet(六)分页相关

    前面写了Servlet(一)到(五),主要是在网上搜罗的视频.对分页这块还是不太清楚.于是有找到一些视频,重新学习了一下.主要是对分页的认识和设计思路.也是为了方便我以后回忆一下.. 一.分页常识 p ...

  9. Java基础——Servlet(四)

    最近一直在学习Servlet,真的有烦躁,一下子要创建好几个文件,服务端.客户端.html页面....学习进度蛮慢的,很容易失掉信心.当学习到cookie时,发现有好多实现是在我们日常生活中可以会遇得 ...

随机推荐

  1. xcb编译

    sed -i "s/pthread-stubs//" configure && ./configure $XORG_CONFIG \ --enable-xinput ...

  2. docker的一些命令

    转自:http://blog.csdn.net/wsscy2004/article/details/25878363 查看容器的root用户密码 docker logs <容器名orID> ...

  3. CEdit实现文本换行

    CEdit控件若要在字符串中插入换行字符("\r\n")实现换行效果,必须指定两个风格 ES_MULTILINE和ES_WANTRETURN. 1: DWORD dwStyle = ...

  4. js预编译

    先来做三个测试 eg1: var a; a = 1; function a() {}; console.log(a); eg2: var a; function a() {}; console.log ...

  5. ios电话监听状态

    #import "ViewController.h" #import <CoreTelephony/CTCallCenter.h> #import <CoreTe ...

  6. 第六百二十六天 how cna I 坚持

    年代数竟然算错了,哎,好笨啊.2000年得有100代人了,好傻啊. 1到100,哎. 早上好像想通了呢,哎.又不打算去拉萨了. 到底..哎.睡觉.

  7. WCF配置文件的问题(位置)

    引用过了远程的WCF服务,会自动生成配置文件,但是这个配置的位置,尽量放在applicationSettings的前面 刚才测试了,貌似放后面,会报错(执行的时候,这个问题,需要继续试验) (待验证) ...

  8. thinkphp整合系列之短信验证码、订单通知

    现在这个短信通知泛滥的年代:应用如果没有个短信注册:你都不敢说你是搞开发的: 这个验证码搞起来是不难的:但是如果刚接触也是有点不知从哪下手的迷茫: 先讲下概念: 要想发送验证码:需要至少三项:appi ...

  9. CSS3秘笈:第十二章&第十三章

    第十二章 1.网页布局类型 (1)固定宽度 (2)流式 (3)响应式Web设计 2.CSS布局的方法 通过给元素设置一个宽度,将它浮到左侧或右侧,就可以创建一个列(元素后面的文本会环绕浮动的元素,仿佛 ...

  10. SharePoint 2010 应用url参数过滤列表视图数据(应用get办法过滤列表数据)

    名人名言:读活书,活读书,读书活.——郭沫若 题目其实不知道如何称呼才干合适大师的搜刮习惯.以便有类似题目经由过程百度或google可以搜刮到,其实就是在url后面添加参数过滤显示我们想要的成果,有人 ...