1.1. Servlet简介

servlet:1、接受浏览器发送过来的消息。

2、给浏览器返回消息。浏览器认识html。可以动态去输出html

Request:请求。客户端向服务端发送的信息。

Response:响应。服务器向客户端放松的信息。

通常请求和响应是成对出现的。

作用:servlet 编写一个程序生成网页。

浏览器请求—servlet,servlet会生产html。把html传送给浏览器(响应)。浏览器看到内容是html

sun公司提供过的servlet的api在javaEE的规范中。如果要使用servlet需要使用javaEE的api。(javeEE包)

javaEE相关的包,(myeclipse自带。当新建一个web工程的时候,myeclipse会自动的把javaEE包导入工程中。)

注意:javaEE的api并不在jdk中。

1.2. servlet快速入门

1.2.1. 编写servlet

写servlet做两件事

1、实现servlet接口。 由sun公司定义的一个接口。(定义一个规范)

2、把类部署到web服务器中(tomcat)。

sun公司定义一个servlet的规范。定义了servlet应该有哪些方法,以及方法需要的参数。

1、实现servlet接口(javax.servlet.Servlet)

public class Hello implements Servlet{} 实现servlet接口

3、Servlet的api在那里?javaEE的包里面。

myeclipse在创建web工程的时候会自带上。

tomcat的lib目录中也包含了javaEE的包

1.3. servlet生命周期

servlet的生命周期。

什么时候创建一个servlet。

什么时候去销毁一个servlet。

init方法:当服务器创建一个serlvet的时候,会去调用init方法。

当我们第一次去访问一个servlet的时候,会去创建这个servlet对象。并且只会创建一次。

如果配置了load-on-startup 表示服务器启动的时候创建servlet。

service方法:客户端每一次请求,tomcat都会去调用servcie方法。处理用户的请求。并且给其响应。

每一次请求都会调用servcie方法。

destroy 方法:当服务器销毁一个servlet的时候,会调用里面的destory方法。

当我们的web服务器,正常关闭的时候,会去调用destroy方法。

否则不会调用destroy的方法。

1.4. 快速创建一个servlet---掌握

知道:1、自己去定义的servlet 只需要继承HttpServlet 就可以实现 servlet的接口了。

2、以后处理用户的请求,都写在doGet或者doPost方法中。

掌握:

1、如何借助工具创建servlet

2、以后书写的代码 书写在使用doGet 或者doPost 中。

步骤:new---servlet

我们自动创建创建的servlet 是继承 httpServlet

GenericServlet 实现了。servlet的接口。

所以安装工具类创建的servlet ,也是实现了servlet的接口

GenericServlet 已经对一些servlet中定义方法进行了实现。

HttpServlet 是GenericServlet的子类。针对http协议的 包含了一些协议相关的内容的servlet。

我们在通过工具去创建的servlet中,要重写的方法是doGet,doPost . ( post,get提交数据的方式,是http协议中的。)

获取http请求的方式。post 和get

因为httpServlet中, service方法回去调用doGet或者doPost. 可以根据不同的请求方法,进行不同的处理。

1.5. 去除servlet模板:

找到myeclipse的按装路径,common搜plugins下面的com.genuitec.eclipse.wizards,用解压工具打开找到templates/servlet.java

注意:一定要先关闭myeclipse,再进行修改

1.6. url-pattern三种配置

url-pattern 配置servlet的访问路径。

1、完全路径匹配,以”/”开头 后面是具体的路径信息。

你输入什么内容。访问的时候,就需要输入什么内容,才可以找到对应的servlet

例如

<url-pattern>/hello</url-pattern>

在访问的时候 http://ip:端口/应用名/hello 才可以找到hello的servlet

2、目录匹配,以/*结尾

例如 /abc/* ---这这个url-patten 对应的servlet

在访问的时候只有/abc/xx /abc/dd /abc/cc

http://ip:端口/abc/abx

http://ip:端口/abc/bdsf

/abc/ssss

/abc/fdsafd/asdf/asdf

3、扩展名匹配 *.扩展名

*.do

*.action

当访问的时候 输入a.do b.do

/ddd/asdf/a.do

访问的时候aa.do

/abc/a.do

在url进行匹配的时候,会寻找更具体的进行匹配

1.7. web中的资源路径

告诉大家:如何去访问一个web中的资源。

web资源路径访问的问题;

1、部署工程文件的位置

WebRoot 下所有资源全部发布到服务器webapps 目录应用名下 所有静态页面放在WebRoot 下或者 WebRoot 子目录

项目部署的时候,会把工程中的WebRoot这个文件夹拷贝到tomcat的webapps目录下。把WebRoot文件夹的名字修改成项目的目录名字;

考虑问题:

在webroot外面去创建了一个html a.html

javaweb servlet框架实现登录注册(java:四servlet入门详解远离404)(1)

此时a.html 不能被访问的。 因为项目部署的时候,至部署了。webRoot 里面的内容。

以后我们把html文件,css。js都放到webRoot 下

javaweb servlet框架实现登录注册(java:四servlet入门详解远离404)(2)

在浏览器中,如何去访问一个html内容。

http://localhost:8080/day09/直接书写html文件的路径,相对与WEBROOT这个文件夹路径

例如b.html 和c.html的访问路径可以是:

http://localhost:8080/day09/b.html

http://localhost:8080/day09/html/c.html

关于servlet 。在web.xml中进行配置servlet路径 url-pattern . 相当于servlet的访问路径

之前的内容:http://localhost:8080/day09/url-pattern

例如我们在web.xml中配置了

访问的时候,可以书写:http://localhost:8080/day09/login

2: 源码 servlet 全部在src ---> 映射 WEB-INF / classes 目录下!!

src存放的java源文件。

把java文件进行编译,编译好的classes放到到WEB-INF/classes。

项目中的资源访问的路径的问题

浏览器输入什么样的路径信息,才可以找到对应的资源。

1.7.1. 如果有一个表单。表单的内容提交到servlet中,怎么去书写路径

在html的页面 。书写 / 表示的内容 http://localhost:8080

javaweb servlet框架实现登录注册(java:四servlet入门详解远离404)(3)

1.7.2. 相对路径

相对路径的写法

hello 统一个文件夹下

./hello 统一个文件夹下

../ 表示上一层目录

使用相对路径的时候,需要进行路径的比对

例如在

http://localhost:8080/day09/hello.html

http://localhost:8080/day09/login

那么在hello.html 这个页面,可以理解为 hello.html 和 login 在一个路径下

1.7.3. 绝对路径

分为服务器端和客户端(浏览器)

•Web系统中的相对路径和绝对路径

–绝对路径:/hello /myweb/hello

•服务器端和客户端对于/ 的区别

如果是在服务器端 / 表示的是 http://localhost:8080/day9

客户端 http://localhost:8080

客户端关于路径问题的编程结论

*.html *.jsp 内都使用绝对路径

*.css 内部使用相对路径---- 背景图片

*.js中使用绝对路径

1.7.4. servletConfig说明

servletConfig 是一个对象。javaee规范中定义的一个对象。要求web服务器(tomcat),创建一个servlet的同时,也要去创建一个servletConfig对象。还要给servlet去使用。

serlvetConfig 是我们servlet 一些的配置信息。如果一个servlet 使用的过程中需要一些参数信息。这些参数信息,可以配置到servletConfig中。 之后servlet去使用。

serlvetConfig对象使用总结:

1、如果servlet需要一些参数。我们可以在servlet这个标签内去进行配置(web.xml)

javaweb servlet框架实现登录注册(java:四servlet入门详解远离404)(4)

2、tomcat去工作:读取servlet中init-param这个标签。把里面的内容封装到servletConfig对象中。

3、tomcat去工作,调用servlet中init方法。把封装好的servletConfig对象。传递到对应的servlet中。

4、如何去使用:

4.1 需要获取servletConfig,getServletConfig方法去获取对象

4.2获取里面具体的值。servletConfig.getInitParameter(key);

javaweb servlet框架实现登录注册(java:四servlet入门详解远离404)(5)

示例

web.xml

javaweb servlet框架实现登录注册(java:四servlet入门详解远离404)(6)

servlet.java

javaweb servlet框架实现登录注册(java:四servlet入门详解远离404)(7)

1.7.5. ServletContext说明

ServletContext是整个web项目应用程序运行后的代表对象。(代表当前一个项目)可以通过ServletConfig的getServletContext() 的方法得到,然后可以用该对象取得整个应用程序的相关资源或者信息。

统计一个网站的访问量: (多个不同的servlet 都可以进行访问)

javaweb servlet框架实现登录注册(java:四servlet入门详解远离404)(8)

配置全局的字符集:(所有的serlvet都可以使用)

javaweb servlet框架实现登录注册(java:四servlet入门详解远离404)(9)

ServletConfig:一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet

有效,一个servlet的ServletConfig对象不能被另一个servlet访问。

ServletContext:对任何servlet,任何人在任何时间都有效,等于是全局的对象。

,