一,Servlet概述
1. 定义:Java服务器小程序
使用Java语言编写
符合Servlet规范
由服务器端调用、执行
2. 优点:
可移植性:延续Java的跨平台性
性能:其对象实体一直驻留在内存中,利用多线程处理相同服务的请求
安全性:延续Java的类型检查,垃圾回收等特性
二,Xml概述
1.什么是XML
XML即为可扩展的标记语言(eXtensible Markup Language)
XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识
2.用途
配置文件
数据存储
三,编写第一个Servlet
1. 编写Servlet源程序
新建项目,导入Servlet的jar包
继承HttpServlet类,重写doGet()方法
2. 在Tomcat中部署此Servlet
建立web应用目录
新建项目文件夹hello,在hello文件夹中建立文件夹WEB-INF
将classes文件夹拷贝到WEB-INF文件夹
将使用的jar包(lib)拷贝到WEB-INF文件夹
配置web.xml文件
<servlet>
<servlet-name>first</servlet-name> servlet名称
<servlet-class>com.haina.FirstServlet</servlet-class>包名+类名
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name> servlet名称
<url-pattern>/abc</url-pattern> web访问路径
</servlet-mapping>
3. 运行Servlet:http://localhost:8080/abc
案例:FirstServlet.java
package com.haina.web;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
//想要实现Servlet的功能,需要继承HttpServlet
//HttpServlet这个类是servlet-api.jar提供的
public class FirstServlet extends HttpServlet {
//重写父类方法的快捷键 CTRL+O
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
PrintWriter writer=resp.getWriter();
writer.println("<html>");
writer.println("<head><title>servlet页面</title></head>");
writer.println("<body>");
writer.println("<h1>测试一下servlet</h1>");
writer.println("</body>");
writer.println("</html>");
writer.flush();
}
}
在web-inf文件夹中的xml文件中编写下面的代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>first</servlet-name>
<servlet-class>com.haina.web.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>first</servlet-name>
<!-- url-pattern的值必须以斜杠开头-->
<!-- url-pattern的值必须以斜杠开头-->
<!-- url-pattern的值必须以斜杠开头-->
<url-pattern>/abc</url-pattern>
</servlet-mapping>
</web-app>
使用tomcat运行,在网址输入<url-pattern>中的内容,不用打/奥,
四,Servlet体系结构
实现Servlet的三种方式:
实现Servlet接口
继承GenericServlet抽象类
继承HttpServlet抽象类
五,doGet()和doPost()方法
1. doGet()方法
处理HTTP协议中的GET请求
在地址栏中显示,速度较快
只有一个流,参数附加在url后,大小个数有严格限制(2k)且只能是字符串
public void doGet(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException
2. doPost()方法
处理HTTP协议中的POST请求
在header中传输,速度较慢
可以用不同的流传递参数而不是url,可以传递二进制数据如文件的上传,长度基本可视为无限制(建议小于64k)
public void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException,IOException
3. HttpServletRequest类型对象提供有关请求的信息
4. HttpServletResponse类型对象提供有关响应的信息
5. 一般只在一个方法中加入逻辑,另一个方法调用此方法