一.Servlet
1.Servlet的定义
- Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
- 狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
- 最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。
Servlet是作用在服务器端java应用程序,也是运行在tomcat容器中的java类。
2.Servlet的作用
- 在程序启动之后 ,用来获取浏览器发送请求及请求数据,调用java程序获取数据,将数据返回给浏览器。
3.Servlet的生命周期
生命周期 | 用法 | 时间 |
---|---|---|
实例化 | 使用构造方法来实例化 | 在servlet被加载的时候被实例化 |
初始化 | 使用init方法 | 在被调用时初始化 |
执行 | service方法 | 当浏览器发送请求,servlet被调用的时候执行 |
销毁 | destory方法销毁 | 当服务器关闭的时候销毁 |
4.Servlet 的工作流程
- 浏览器发送请求--------tomcat容器--------自动加载web.xml配置文件--------实例化、初始化servlet--------调用servlet处理请求 --------调用数据库获取数据--------将数据响应给浏览器--------服务器关闭servlet销毁。
5.如何创建servlet
创建方式三种:
- 实现servlet接口
- 继承GenericServlet 类
- 继承HttpServlet 类(常用的)
二.第一个javaweb程序 Hello world
- 通过前端发送的请求,在控制台输出一个hellowold ,在页面在显示一个Hello world
1. 给eclipse添加tomcat 进行配置
2.基本步骤:
- 创建动态web项目(创建xml文件)
- 加载tomcat容器
- 编写前端页面
- 创建servlet
- 编写web.xml配置文件
- 启动项目,浏览器访问
2.1创建动态web项目(创建xml文件)
- 如果忘记勾选,可以点击File----JavaEE Tools-----Generate Deployment Descriptor Stub
- web.xml
2.2 加载tomcat容器,编写前端页面
2.3创建servlet
package com.nebula.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.net.httpserver.HttpServer;
//是servlet和genericServlet的子类,同时实现了Serializable
public class HelloServlet extends HttpServlet{
private static final long serialVersionUID = 6924982805230638229L;
//无参数构造方法
public HelloServlet() {
super();
System.out.println("实例化servlet");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("get请求处理");
System.out.println("hello world!!!");
resp.getWriter().write("hello world!!!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("post请求处理");
}
@Override
public void destroy() {
System.out.println("servlet销毁");
}
@Override
public void init() throws ServletException {
System.out.println("servlet初始化");
}
}
2.4配置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>HelloServlet</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-name>helloServlet</servlet-name>
<servlet-class>com.nebula.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
</web-app>
三.第一个servlet程序运行代码介绍
1. javaweb,servlet程序的工作流程
程序启动-------tomcat服务器-------web.xml配置(xml文件解析)--------创建servlet-----------------执行doget,dopost----------响应数据
2.web.xml配置文件的内容
- <?xml version="1.0" encoding="UTF-8"?> xml文件的编码和版本
- 所有的配置信息都必须写到web-app标签中
<display-name>HelloServlet</display-name>
当前项目的名字,可有可无- 默认的首页面 http://localhost:8080/项目名称/默认页面(默认页面也可以不要)
- web.xml的全局变量
- 过滤器和监听器的配置
- servlet的配置,使用反射机制获取servlet类(url-pattern:访问路径)
- 一个servlet一般用来处理一种请求,两个也可以。
- 在配置servlet中,可以配置多个servlet,但servlet-name不能相同
- 配置servlet的局部变量,加载时机(加载时机时数字越小,加载越早)
- 服务器启动加载web.xml文件的时候实例化servlet。
四.前端页面如何访问servlet的
- 程序启动-------tomcat服务器-------web.xml配置(xml文件解析)--------创建servlet-----------------执行doget,dopost----------响应数据
1.前端页面
-
可以使用a标签、img、form表单来发送请求。 在HTML中,a标签的href,form的action中的/表示的是ip:port,不写默认的是ip:port/项目名字。
-
也可以使用浏览器的url中直接输入访问路径(http://localhost:8080/helloservlet/helloservlet),它会去找tomcat应用服务器,应用服务器根据请求url路径,去匹配servlet-mapping的url-pattern
-
根据请求方式来用doget或者dopost来进行处理。
-
a,img,form的默认请求方式都是get请求,都会使用doget方式进行处理。可以使用form的post
-
web程序,如果修改了静态页面,不需要重新启动服务器就可以使用。修改servlet代码,需要重新启动,eclipse会自动帮助我们重新启动tomcat。
-
PrintWriter writer = resp.getWriter();writer.write("hello world!!!");
与resp.getWriter().write("hello world!!!");
相同
2.servlet调用Java程序将数据库的数据显示到页面中
- 只需要在servlet中编写数据库操作代码,java怎么写,servlet就怎么写;或者在servlet中引用数据操作类。
- 响应数据:httpservletresponse对象
- 响应一个新的页面,以io流的形式,将响应的文本内容给到浏览器。