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
此时a.html 不能被访问的。 因为项目部署的时候,至部署了。webRoot 里面的内容。
以后我们把html文件,css。js都放到webRoot 下
在浏览器中,如何去访问一个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
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)
2、tomcat去工作:读取servlet中init-param这个标签。把里面的内容封装到servletConfig对象中。
3、tomcat去工作,调用servlet中init方法。把封装好的servletConfig对象。传递到对应的servlet中。
4、如何去使用:
4.1 需要获取servletConfig,getServletConfig方法去获取对象
4.2获取里面具体的值。servletConfig.getInitParameter(key);
示例
web.xml
servlet.java
1.7.5. ServletContext说明
ServletContext是整个web项目应用程序运行后的代表对象。(代表当前一个项目)可以通过ServletConfig的getServletContext() 的方法得到,然后可以用该对象取得整个应用程序的相关资源或者信息。
统计一个网站的访问量: (多个不同的servlet 都可以进行访问)
配置全局的字符集:(所有的serlvet都可以使用)
ServletConfig:一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet
有效,一个servlet的ServletConfig对象不能被另一个servlet访问。
ServletContext:对任何servlet,任何人在任何时间都有效,等于是全局的对象。
,