HTTP
Http协议的定义:
超文本传输协议,应用层协议
协议格式
http://ip或域名:端口/项目路径/资源路径?参数名=参数值
协议特点
1、支持客户端/服务端模式
2、简单快速
3、灵活
4、http/1.1后支持持续连接
5、无状态
请求协议
请求行
请求方式(GET/POST) 请求路径 协议版本
请求头
每一个报头域都是由名字+“:”+空格+值组成,消息报头域的名字是大小写无关的。
请求正文
GEt请求没有请求正文,POST请求有
响应协议
响应行/状态行
协议版本 响应状态码 状态码说明
响应头/消息报头
每一个报头域都是由名字+“:”+空格+值组成,消息报头域的名字是大小写无关的。
响应正文
浏览器中能看到内容
消息头
请求头
referer
该请求头指明请求从哪里来(上一个页面是谁)
如果是直接从地址栏输入的地址,是没有referer请求头
常用场景:百度竞价、统计工作和防盗链等
响应头
Refresh:
自动跳转(单位是秒),可以在页面通过 meta 标签实现,也可在后台实现。
3秒钟后跳转到指定页面
<meta http-equiv="refresh" content="3;url=http://www.shsxt.com">
每几秒刷新页面一次
<meta http-equiv="refresh" content="3;">
ServLet实现步骤
1、新建项目
1)、右侧空白,右键选择"New"
2)、选择"Project",搜索"Web",选择"Dynamic Web Project"
3)、设置项目名称及版本为2.5
4)、选择"Next",再"Next",设置站点名Context root
5)、选择"Finished"
2、新建普通Java类
3、实现Servlet规范,①继承HttpServlet类,②实现Servlet接口,③继承GenericServlet类
4、重写service()方法
public class Servlet01 extends HttpServlet { //此处用继承HttpServlet 类
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
System.out.println("Hello Servlet!");
// 能够输出流写出内容到浏览器中
arg1.getWriter().write("Hello Servlet!");
}
}
注意:
- 初始化方法,服务器执行的方法,只会执行一次,Servlet第一次被访问时执行
public void init(ServletConfig config) throws ServletException {
System.out.println("Servlet03 init....");
}
- 服务方法,可执行多次,每次访问servlet时都会调用
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("Servlet03...");
}
- 销毁方法,servlet实例销毁时调用,只会调用一次
public void destroy() {
System.out.println("Awsl....");
}
5、配置web.xml (项目的WEB-INF目录下)
<servlet>
<servlet-name>servlet01</servlet-name> <!-- servlet的名称,给服务器看的;要与<servlet-mapping>标签中的<servlet-name>保持一致 -->
<servlet-class>com.shsxt.servlet.Servlet01</servlet-class> <!-- Servlet类的类名路径;按住ctrl键,能点进去表示路径正确 -->
</servlet>
<servlet-mapping>
<servlet-name>servlet01</servlet-name><!-- servlet的名称,给服务器看的;要与<servlet>标签中的<servlet-name>保持一致 -->
<url-pattern>/ser01</url-pattern> <!-- servlet的对外访问路径,给浏览器看的 -->
<!-- 自启动:服务器启动时将该servlet实例化;数字表示优先级,值越小,优先级越高 -->
<load-on-startup>1</load-on-startup>
</servlet-mapping>
注意:
1、< servlet>中的< servlet-name>标签的值要唯一
2、< servlet-mapping>中的< url-pattern>的值要唯一
java.lang.IllegalArgumentException: The servlets named [servlet04] and [servlet05] are both mapped to the url-pattern [/ser04] which is not permitted
3、< servlet>中的< servlet-name>与< servlet-mapping>的< servlet-name>标签保持一致
4、< url-pattern>的值前面要加"/"
java.lang.IllegalArgumentException: Invalid <url-pattern> ser05 in servlet mapping
5、修改了配置文件必须要重启服务器才会生效
6、一个Servlet可以配置多个访问路径
通配符"*"
只能放在最前面或最后面
不能放中间且不能单独存在(以/分割的,不能和单词组成整体)。
越精确越优先。