Servlet和浏览器协议 常见WEB服务器:
Apache :发布PHP
IIS :发布ASP
WebSphere:IBM公司研发,收费大型服务器软件,支持EE所有规范
WebLogo :BEA,收费大型服务器软件,支持EE所有规范
Tomcat :Apache,免费小型服务器软件
协议:
HTTP:规定浏览器和服务器之间要遵守的规则
请求和响应模型
先有请求后在有响应,请求响应成对出现
默认端口号:80
HTTP协议版本:
1.0 :每次响应后即可关闭连接
1.1 :响应后不会理解关闭链接,等到指定时间没响应后才会关闭链接
WEB动态资源目录结构
----静态资源
----WEB-INF
----web.xml
----classes class类文件
----lib jar包
WEB静态网站可以没有WEB-INF
发布WEB工程到Tomcat三种方式:
1.把工程复制到tomcat安装路径下/webapps
2.配置虚拟路径:tomcat/conf/server.xml中配置(不推荐 )
Host 节点下添加<Context path='/虚拟路径' docBase='盘符路径'>
推荐:
tomcat路径下:conf/Catalina/localhost/创建xml文件,文件名代表虚拟路径,<Context docBase='盘符路径' />
tomcat路径下:webapps/**.war
1.把项目打包,扩展名改成.war
2.放到webapps下 ,服务器启动会自动解压
配置好需要重启Tomcat
启动服务:tomcat/bin/startup.bat
Http协议:
请求部分
请求行:GET[请求方式] /**/*.xx[盘符路径] HTTP/1.1[协议版本]
请求头:
User-Agent : 浏览器类型
Referer : 网页来源
IF-Modified-Since: 查找本地缓存
Refresh : 定时刷新/定时跳转(配合Location属性使用)
请求体:
Post会有请求体,Get没有
状态码:
200 : 成功
302 :重定向(配合Location使用)
304 :查找本地缓存
404 :资源不存在
500 :服务器内部错误
响应头:
Last-Modified :与请求中的IF-Modified-Since一起使用查找本地缓存
Content-Dispostion :文件下载使用的头信息
Location :重定向的跳转路径
Refresh :定时刷新/定时跳转
Tomcat:
bin :tomcat执行的文件
conf :tomcat配置文件
lib :运行的jar包
logs :运行日志文件
temp :产生的临时文件
webapps :发布的web路径
work :JSP翻译成Servlet文件
创建WEB项目:
Java ReSources
SRC JAVA文件
WebContent 资源文件
Tomcat 常用问题
1.JRE不能正常运行
2.端口号冲突
设置端口号:
conf/Server.xml
Connector节点 Port="端口号"
查看端口号:netstat -ano
3.配置文件错误
Servlet概述
运行在服务器上的小JAVA程序,处理客户端发送过来的请求和响应。
Servlet作用:
处理从客户端发送来的请求,在响应给客户端
创建Servlet:
创建一个类,实现Servlet
ServletRequest
String getParameter(String name) 接受一个名称对应一个值
String[] getParameterValues(String name) 接受一个名称对应多个值
Map<String,String> getParameterMap() 接受表单中所有数据,key参数名称,value值
Map<String,String[]> Enumeration getParameterMap()
ServletResponse
OutputStream getOutputStream() //获取输出流
XML配置
web.xml
1.配置Servlet
<servlet>
<servlet-name>Servlet类自定义名称</servlet-name>
<servlet-class>字节码路径</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>和Servlet类自定义名称一致</servlet-name>
<url-pattern>/xxx映射虚拟路径</url-pattern>
</servlet-mapping>
Servlet实现关系
Servlet :接口
GenericServlet :通用的Servlet
HttpServlet :针对Http协议的类
WEB导包直接把jar包添加到lib文件中
传统三层:
Web层/控制层(Servlet)
作用:处理流程
业务逻辑层(Service)
作用:处理各种业务逻辑
数据访问层(Dao)
作用:所有操作数据库动作
Servlet
Servlet 生命周期
声明周期:一个对象从创建到销毁的过程
第一次访问Servlet时创建Servlet实例
任何一个请求访问Servlet都会创建一个线程访问Servlet下的servlet,根据请求方式不同,调用doPost和doGet
当项目中在服务器移除时,或者正常关闭时调用destroy方法
Servlet有且只有一个
配置Servlet服务器启动时创建好Servlet对象
web.xml中servlet标签中配置
当页面加载费时间的动作的时候,可以把这个动作写在服务器启动时执行
<load-on-startup>2以上数字</load-on-startup> 1是默认c配置,管理默认页面(页面出错弹出的页面)
url-pattern路径匹配
1.完全路径匹配 :以 / 开始 /xx/xxx/xxxx
2.目录匹配 :以 / 开始,* 结束 /xx/xxx/*
3.扩展名匹配 :不能以 / 开始,以 * 开始 *.xxx文件(指定扩展名文件)
匹配优先级 :完全路径匹配 > 目录匹配 > 扩展名匹配
开发中路径编写
尽量用绝对路径(不带协议绝对路径): /工程名/具体页面
HttpServletResponse
响应头
设置页面状态码
setStatus(int sc)
响应行
针对设置多个值时
addDateHeader(String name,long date)
addHeader(String key,String value)
addIntHeader(String key,int value)
针对一个值是
setDateHeader(String name,long date)
setHeader(String key,String value)
setIntHeader(String key,int value)
响应体
ServletOutputStream getOutputStream()
PrintWriter getWriter()
几种页面跳转方式:
协议跳转
Refresh 秒,URL=网址
meta 头部分
equiv="Refresh" Content="秒,URL=网址"
JS实现 cation.href跳转到指定网页
解决响应时页面出现乱码问题:
设置响应内容类型。可以包含编码
setContentType(" text/html;charset='UTF-8' ");
ServletContext对象
作用:存取数据,两个类之间共享数据
作用域:整个WEB工程
创建:服务器启动时候,tomcat在为每个项目创建一个ServletContent对象(且一个项目只有一个ServletContent对象)
销毁:服务器关闭时或者移除当前项目时销毁。
作用:
1.用来获取全局初始化参数
2.用来获取文件的MIME类型
3.作为域对象的存储数据
setAttribute(String name) 传入数据
Object getAttribute(String name) 获取数据
removeAttribute(String name) 移除数据
String getServletName() 获得XML中设置的name的值
Enumeration getInitParameterNames() 获得所有Servlet的初始化参数名称
Servlet中不能设置成员属性,因为多线程访问Servlet对象,有资源抢占问题
ServletConfig
作用:获取Servlet配置
String getInitParameter("名称")
web.xml中配置
<servlet>
<init-param>
<param-name>名称</param-name>
<param-value> 值</param-value>
</init-param>
</servlet>
|
|