创建项目
新建项目
Java Enterprise
JDK1.8
Web Application
Tomcat
JAVA
默认
过程需要联网
Maven的配置
IDEA内置Maven
修改本地仓库位置,因为以后会越来越大
替换配置文件:
阿里云镜像下载
Servlet基础
1.动态Web资源开发
2.Servlet是使用Java语言编写的运行在服务器端的程序,Servlet由Servlet容器提供,所谓的Servlet容器是指提供了Servlet 功能的服务器(本书中指Tomcat),Servlet容器将Servlet动态的加载到服务器上。
3.Servlet是指任何实现了这个Servlet接口的类,Servlet主要用于处理客户端传来的HTTP请求,并返回一个响应,它能够处理的请求有doGet()和doPost()等方法。
请求静态资源(图片,文档等):读出来后直接返回响应
请求Servlet:
Servlet的请求首先会被HTTP服务器接收,HTTP服务器只负责静态HTML页面的解析,对于Servlet的请求转交给Servlet容器,Servlet容器会根据web.xml文件中的映射关系,调用相应的Servlet,Servlet将处理的结果返回给Servlet容器,并通过HTTP服务器将响应传输给客户端。
Servlet容器:一段内存空间
Servlet技术特点
Servlet技术具有如下特点:
1.方便:Servlet提供了大量的实用工具例程,如处理很难完成的HTML表单数据、读取和设置HTTP头,以及处理Cookie和跟踪会话等。
2.跨平台:Servlet用Java类编写,可以在不同操作系统平台和不同应用服务器平台下运行。
3.灵活性和可扩展性:采用Servlet开发的Web应用程序,由于Java类的继承性及构造函数等特点,使得应用灵活,可随意扩展。
4.除了上述几点外,Servlet还具有功能强大、能够在各个程序之间共享数据、安全性强等特点。
抽象类与接口
抽象类与接口:抽象类只能单继承,接口可以多继承。
相同点
(1)都不能被实例化
(2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能实例化。
不同点
(1)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
(2)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
(3)接口强调特定功能的实现,而抽象类强调所属关系。
(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
Servlet抽象方法
SUN公司提供了一系列接口和类,其中最重要的接口是javax.servlet.Servlet。在Servlet接口中定义了5个抽象方法
1.servlet生命周期:由servlet容器自动调用,所以返回值为void
init(),service(),destory()
2.servletCofig():一个servlet类对应一个servlet实例,有一个servletCofig(),所以每个servletCofig()都不同
3.void service():servletRequest请求对象,serveltResponse()请求响应
其中init()、service()和destroy()这三个方法可以表现Servlet的生命周期,它们会在某个特定的时刻被调用。另外,getServletInfo()方法用于返回Servlet的相关信息。getServletConfig()方法用于返回ServletConfig对象,该对象包含Servlet的初始化信息。需要注意的是,表中提及的Servlet容器指的是Web服务器。
service()被具体化为其他不同需要的调用方法,如GenericServlet(),HttpServlet()
servlet接口实现类
针对Servlet的接口,SUN公司提供了两个默认的接口实现类:GenericServlet和HttpServlet。
GenericServlet是一个抽象类,该类为Servlet接口提供了部分实现,它并没有实现HTTP请求处理。
HttpServlet是GenericServlet的子类,它继承了GenericServlet的所有方法,并且为HTTP请求中的POST、GET等类型【总共8种,常用两种】提供了具体的操作方法。【编程直接使用!! !】
HttpServlet的常用方法及其说明如下表所示:
HttpServlet示例:
IDEA中创建Servlet
1.新建servlet:
new-servlet
2.
虚拟地址映射,java servlet–》URL
1)基于注解的方式
2)使用webapp-WEB-INF-web.xml中配置,[xml文件方式]
注意:使用新建servlet的方式,会在web.xml中创建servlet
3.写好之后,启动Tomcat
http://localhost:端口号/当前工程根路径/
http://localhost:8082/WebServletProject_war_exploded/
要访问的具体servlet:
http://localhost:8082/WebServletProject_war_exploded/servlet_1
http://localhost:端口号/当前工程根路径/value的值
修改样式后要重启Tomcat
报错:servlet不能映射为一个url模式
Caused by: java.lang.IllegalArgumentException: 名为 [servlet_2]和 [Servlet_1] 的servlet不能映射为一个url模式(url-pattern) [/servle]
注意:注解配置的value和web.xml中的配置
启动程序时自动加载Servlet程序
适用于数据库servlet加载
web.xml代码:
servlet请求的分发处理-get()和post()
get_post.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--get方法-->
<form action="http://localhost:8082/WebServletProject_war_exploded/servlet_2" method="get">
<input type="submit">
</form>
<!--post方法-->
<form action="http://localhost:8082/WebServletProject_war_exploded/servlet_2" method="post">
<input type="submit">
</form>
</body>
</html>
Servlet_2.java:
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3.访问");
//类型转换,使用ServletRequest 子类 HttpServletRequest的getMethod()方法
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
//获取请求的方式:GET POST
String method = httpServletRequest.getMethod();
//打印
System.out.println(method);