javaweb
web开发是基于请求和响应的:
请求:浏览器(客户端)向服务器发送信息
响应:服务器向浏览器回送信息
请求和响应是成对出现的。web资源分类
所谓web资源即放在Internet网上供外界访问的文件或程序,又根据它们呈现的效果及原理不同,将它们划分为静态资源和动态资源。
静态web资源:固定不变数据文件(静态网页 HTML、文本、音频、视频)
静态web技术:HTML+CSS+JavaScript (HTML5+CSS3) ====== DHTML (Dynamic HTML)
动态web资源:一段程序,运行后,生成数据文件
动态web技术:servlet,jsp,php, .net ,ruby、python
tomcat
开源小型web服务器 ,完全免费,主要用于中小型web项目,只支持Servlet和JSP 等少量javaee规范 ,Apache公司jakarta 一个子项目
1、安装和启动tomcat
2、把一个web的工程(把一些资源部署到tomcat中,可以让用户去访问);
3、tomcat和myeclipse的结合使用。
tomcat下载和安装说明
提供的.zip结尾。免安装版本。不需要安装,可以直接使用:
注意事项:
1、JAVA_HOME:环境变量。并且配置到jdk的目录。
例如:
C:\Program Files\Java\jdk1.7.0_72
2、启动tomcat。 tomcat/bin/startup.bat(window启动文件)
找到startup.bat 双击运行。会有一个黑窗口,黑窗口不要关闭。(如果关闭,相当于把tomcat停止了。)
3、在浏览器地址栏中输入:http://localhost:8080 127.0.0.1:8080
如果看到如下页面,证明启动成功
在myclipse中配置 tomcat
启动tomcat:
注意:此时我们的系统只能启动一个tomcat。
tomcat服务器与servlet版本的关系
servlet:sun公司提供的用于开发动态web资源的技术。
jsp:(java server page),java提供的一门开发web网页的技术。
tomcat软件:java开发的。java软件运行的时候需要jdk。
向下兼容。tomcat7也支持servlet3.0/jsp2.2规范,可以支持javaee6.0
myeclipse自带的tomcat。10.*自带的tomcat是 tomcat 6.*
当前企业常用的版本 7 * / 8 *
tomcat目录结构-----重要
bin目录,启动和关闭
logs目录,日志 目录
webapps目录:web项目部署之后的目录
work目录:jsp的一些文件放到work目录下
将网站目录复制到tomcat/webapps目录----掌握
有一个网站(一个文件夹),把文件夹复制到tomcat的webapps目录下。
文件夹的名字,就是网站的目录.相当于之前配置 Context path
如果webapps下面有一个ROOT的项目。那么在访问的时候,直接可以省略项目的名字/ 表示找到root目录
把war包部署到tomcat中
war:就是一个压缩文件 zip格式的压缩文件。 只不过扩展名不是.zip 而是.war
步骤1、把文件夹中的内容压缩成zip的格式
点击一个要部署的文件夹下面,全选 然后压缩
步骤2、修改文件的后缀名为.war
步骤3.把war文件复制到webapps目录下。tomcat会自己把war的文件进行解压
配置tomcat的端口
tomcat默认的端口是8080(访问端口)
http://www.baidu.com:80
http的默认端口是80.
如果访问的时候
输入http://www.baidu.com
相当于http://www.baidu.com:80
真正在项目上线之后,通常采用80.
在tomcat/conf/server.xml
找到
redirectPort="8443" />
修改port的值。
win7系统,会自带一个软件,把80端口占用了。
配置tomcat在运行中,浏览器访问的端口。
如果启动的时候出现如下错误:表示端口被占用
4.8. 将myeclipse中的web项目部署到tomcat---重点
4.8.1. myeclipse配置tomcat
让tomcat和myeclipse关联起来
注意:选择tomcat的时候,选择到tomcat目录即可。
需要注意的问题:
一定要配置到jdk的目录
4.8.2. myeclipse创建web工程
Context root URL :配置web项目,要被访问的目录(Context path=“”,部署到webapps目录下文件夹的名字。)
4.8.3. 把web工程(myeclipse创建的)部署到tomcat中
1、deplay
myeclipse会把工程文件的内容,复制到tomcat的webapps目录下。
复制Web-Root下面的内容。到tomcat的webapps下。 更改文件夹名字为工程名(默认是工程名。)
启动tomcat
4.9. 修改工程的部署名字
4.9.1. myeclipse把什么内容部署到tomcat中去了
myeclipse只会把webRoot下面的内容拷贝到tomcat的webapps下面
java文件会被编译成class文件。 class文件放到web-inf目录下classes目下
以后html,js,css的内容,放到 webroot目录下。
在web-inf 下面 有一个web.xml 的文件。包含了当前的web工程的一些信息
4.10. web应用(网站)的目录结构
创建web工程的时候,目录结构很相似。
web.xml中的内容
index.html
5. servlet
5.1. servlet简介
serlvet: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中。
5.2. servlet快速入门
5.2.1. 编写servlet
写servlet做两件事
1、实现servlet接口。 由sun公司定义的一个接口。(定义一个规范)
2、把类部署到web服务器中(tomcat)。
sun公司定义一个servlet的规范。定义了servlet应该有哪些方法,以及方法需要的参数。
1、实现servlet接口(javax.servlet.Servlet)
2、重写service方法
当浏览器输入地址,访问servlet的时候,servlet会执行servcie方法。
3、在WebRoot/WEB-INF/web.xml中配置servlet的路径 。浏览器访问servlet的路径
web.xml(新建web工程的时候,myeclipse自动创建出来的)的位置:
在web.xml的根标签下,直接书写如下内日。
4、把项目部署到tomcat中,去启动tomcat。在地址栏中输入信息,访问servlet
5.2.2. 访问servlet
浏览器地址栏中输入:http://localhost:8080/day09/hello
访问过程分析:
5.2.3. servlet入门小结
1、快速创建一个serlvet。
1、创建一个类,去实现java.servlet.Serlvet 这个接口
2、重写类中 service方法
3、在web-inf/web.xml 中去配置serlvet一些信息
2、Servlet的访问过程?
3、Servlet的api在那里?javaEE的包里面。
myeclipse在创建web工程的时候会自带上。
tomcat的lib目录中也包含了javaEE的包
5.3. servlet生命周期
servlet的生命周期。
什么时候创建一个servlet。
什么时候去销毁一个servlet。
init方法:当服务器创建一个serlvet的时候,会去调用init方法。
当我们第一次去访问一个servlet的时候,会去创建这个servlet对象。并且只会创建一次。
如果配置了load-on-startup表示服务器启动的时候创建servlet。
service方法:客户端每一次请求,tomcat都会去调用servcie方法。处理用户的请求。并且给其响应。
每一次请求都会调用servcie方法。
destroy 方法:当服务器销毁一个servlet的时候,会调用里面的destory方法。
当我们的web服务器,正常关闭的时候,会去调用destroy方法。
否则不会调用destroy的方法。
5.4. 快速创建一个servlet---掌握
知道:1、自己去定义的servlet 只需要继承HttpServlet 就可以实现servlet的接口了。
2、以后处理用户的请求,都写在doGet或者doPost方法中。
掌握:
1、如何借助工具创建servlet
2、以后书写的代码书写在使用doGet 或者doPost 中。
步骤:new---servlet
GenericServlet 实现了。servlet的接口。
所以安装工具类创建的servlet,也是实现了servlet的接口
GenericServlet 已经对一些servlet中定义方法进行了实现。
HttpServlet 是GenericServlet的子类。针对http协议的 包含了一些协议相关的内容的servlet。
我们在通过工具去创建的servlet中,要重写的方法是doGet,doPost . ( post,get提交数据的方式,是http协议中的。)
获取http请求的方式。post 和get
因为httpServlet中, service方法回去调用doGet或者doPost. 可以根据不同的请求方法,进行不同的处理。
5.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。
项目中的资源访问的路径的问题
浏览器输入什么样的路径信息,才可以找到对应的资源。
hello 统一个文件夹下
./hello 统一个文件夹下
../ 表示上一层目录
使用相对路径的时候,需要进行路径的比对
例如在
http://localhost:8080/day09/hello.html
http://localhost:8080/day09/login
那么在hello.html 这个页面,可以理解为 hello.html 和 login 在一个路径下
分为服务器端和客户端(浏览器)
• Web系统中的相对路径和绝对路径
– 绝对路径:/hello /myweb/hello
• 服务器端和客户端对于/ 的区别
如果是在服务器端 / 表示的是 http://localhost:8080/day9
客户端 http://localhost:8080
客户端关于路径问题的编程结论
*.html *.jsp 内都使用绝对路径
*.css 内部使用相对路径---- 背景图片
*.js中使用绝对路径
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
5.7.5. servletContext说明
ServletContext是整个web项目应用程序运行后的代表对象。(代表当前一个项目)可以通过ServletConfig的getServletContext() 的方法得到,然后可以用该对象取得整个应用程序的相关资源或者信息。
统计一个网站的访问量: (多个不同的servlet 都可以进行访问)
配置全局的字符集:(所有的serlvet都可以使用)
ServletConfig:一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对本servlet
有效,一个servlet的ServletConfig对象不能被另一个servlet访问。
ServletContext:对任何servlet,任何人在任何时间都有效,等于是全局的对象。