Servlet
1.Servlet概述
- Servlet(Server Applet)服务器小程序,主要功能用于生成动态Web内容,是J2EE最重要的组成部分。
- Servlet是J2EE的核心组件之一,Tomcat是Servlt和JSP标准的实现者;Tomcat提供硬件基础,Servlet进行软件实现。
- 在JAVA中Tomcat对应我们的服务器主机,而Servlet对应我们安装在服务器上的程序代码。
- 运行Servlet需要安装Tomcat。
2.Servlet的创建与生命周期
- 一般在WEB工程中新建Servlet,IDEA可以自己生成相关的Servlet的配置,Eclipse需要自行配置,他是一个标准的JAVA类。需要继承HttpServlet这个父类。
例:
//HttpServlet是所有服务器小程序的父类,必须要继承才能开发servlet
public class FirstServlet extends HttpServlet{
@Override
//request请求,response响应
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接受请求发来的参数
String name = request.getParameter("name");
//进行加工处理
String html = "<h1 style='color:red'>hi," + name +"!</h1><hr/>";
System.out.println("返回给浏览器的响应数据为" + html);
//从服务器向浏览器返回的输出流
PrintWriter out = response.getWriter();
//将html发送回浏览器
out.println(html);
}
}
然后需要在web.xml中进行配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>FirstServlet</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<!-- 声明Servlet -->
<servlet>
<!-- servlet的别名 -->
<servlet-name>first</servlet-name>
<!-- servlet的实现类 -->
<servlet-class>xx.servlet.FirstServlet</servlet-class>
</servlet>
<!-- 将Servlet与URL绑定 -->
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/hi</url-pattern>
</servlet-mapping>
</web-app>
将当前工程发布道Tomcat后通过http://localhost8080/工程名/映射的URL便能进行访问。
如上需要在请求中添加请求参数可在映射地址后面添加访问参数:
http://localhost8080/firstServlet/hi?name=xxx进行访问!,访问网页会对应显示"hi,XXX"。
-
图解执行流程
1.浏览器发送请求===》
2.Tomcat接收===》
3.Servlet进行处理===》
4.在web.xml中查找URL对应的的Servlet===》
5.查找Servlet对应的Class类===》
6.创建Servlet对象,并执行service()方法,service方法是提供响应和支持===》
7.Tomcat通过响应发送给浏览器===》
8.浏览器通过发来的响应进行处理!
2.1 标准的JAVA Web工程结构
2.2 Servlet开发步骤
-
创建Servlet类,继承HttpServlet
-
重写servive方法,编写程序代码
-
配置web.xml,绑定URL
例:
Servlet.java进行创建
public class SampleServlet extends HttpServlet {
public void service(HttpServletRequest request , HttpServletResponse response)
PrintWriter out = response.getWriter();//向浏览器输出的数据流
out.println("<a href='http://www.baidu.com'>Baidu</a>");
}
}
web.xml进行配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
......
<!-- 声明Servlet -->
<servlet>
<!-- servlet的别名 -->
<servlet-name>sample</servlet-name>
<servlet-class>com.imooc.servlet.SampleServlet</servlet-class>
</servlet>
<!-- 将Servlet与URL绑定 -->
<servlet-mapping>
<servlet-name>sample</servlet-name>
<url-pattern>/sample</url-pattern>
</servlet-mapping>
</web-app>
2.3 Servlet访问方法
-
http://ip地址: 端口/context-path/url-mapping。
-
远程访问使用ip地址, 本地访问localhost(127.0.0.1)。
-
context-path称为: 上下文路径, 默认为工程名 。
2.4 请求参数
-
请求参数是指浏览器通过请求向Tomcat提交的数据。
-
也就是用户输入的数据,待Servlet进行处理。
-
格式为:参数名1=值1&参数名2=值2&参数名3=值3…
(键值对之间用"&"连接)。
2.4.1 Servlet接收请求参数:
-
request.getParameter():接收单个参数(最常用)。
-
request.getParameterValues():接收多个同名参数(比如复选框)。
2.5 GET与Post请求方法
-
Get方式是将数据通过在URL附加数据显性向服务器发送数据。例:
http://localhost:8080/FirstServlet/sample?name=zhangsan
-
Post方式会将数据存放在"请求体"中隐性向服务器发送数据。
例:
http://localhost:8080/FirstServlet/sample
请求体: name=zhangsan。在浏览器中按F12中的请求体中可见。
例:
public class RequestMethodServlet extends HttpServlet{
//处理get请求
public void doGet(HttpServletRequest request , HttpServletResponse response) throws IOException{
String name = request.getParameter("name");
response.getWriter().println("<h1 style='color:green'>" + name + "</h1>");
}
//处理POST请求
public void doPost(HttpServletRequest request , HttpServletResponse response) throws IOException{
String name = request.getParameter("name");
response.getWriter().println("<h1 style='color:red'>" + name + "</h1>");
}
}
不要忘了在web.xml中进行配置!
这样无论传来的请求使用的是什么方法,都可以进行解析和读取!
2.5.1 get与post处理方式
-
所有请求: 无差别处理用service()方法;
是doGet和doPost的上级,相当于分发器,对不同请求方式交与相应的方法中进行处理!
-
get请求: doGet()方法;
-
post请求: doPost()方法;
2.5.2 get与post应用场景
- get常用于不包含敏感信息的查询功能。
- post常用于安全性能要求较高的功能或者服务器的"写"操作用户登录用户注册更新公司账目。
2.6 Servlet的生命周期
1.装载-web.xml===》
解析web.xml配置文件。
2.创建-构造函数===》
在第一次访问Servlet进行才进行创建。
3.初始化-init()===》
通过自身的初始化方法,进行Servlet初始化。
4.提供服务-service()===》
通过doGet和doPost提供对应的服务。
5.销毁-destroy()===》
Tomcat重启或者关闭的时候会自动执行销毁工作。
2.7使用注解简化进行配置
-
Servlet3.x之后引入了“注解Annotation”特性】
-
注解用于简化web应用程序的配置过程
-
Serlvet核心注解:@WebServlet
在Servlet上添加 @WebServlet("/anno") //注解 ,其中/anno 为url映射地址,写了注解可以不用再web.xml中进行配置的书写!
2.8 启动时加载Servlet
-
web.xml使用设置启动加载。
-
0~9999。
数字越小优先级越高!0是最先加载!
-
启动时加载在工作中常用于系统的预处理。
用于预先加载复杂的内容,以便于后面的使用。
-
注意在使用注解形式进行预加载,必须要设定一个url地址才行,后面加载预处理的级别就行.
例:
@WebServlet(urlPatterns="/xxx",loadOnStartup=3)