Web 服务器 - Tomcat
1.本地选择 速度较慢
2.插件
<build>
<plugins>
<!--Tomcat 插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
右键run maven进行启动
<configuration>
<port>80</port>
<path>/</path>
</configuration>
port修改端口 path/项目访问路径不用写
3.IDEA中创建 Maven Web项目
-
选择web项目骨架,创建项目 maven-archetype-webapp
-
删除pom.xml中多余的坐标
-
补齐缺失的目录结构 java和resources
Servlet
Servlet 是 Java提供的一门动态web资源开发技术
1. Servlet快速入门
1.1创建 web项目,导入 Servlet依赖坐标
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
1.2创建:定义一个类,实现 Servlet接口,并重写接口中所有方法,并在 service方法中输入一句话
public class ServletDemo1 implements Servlet {
public void service(){}
}
1.3问:启动 Tomcat,浏览器输入URL 访问该Servlet
2. Servlet 执行流程
2.1 Servlet 由谁创建?Servlet方法由谁调用?
Servlet由tomact里面的web服务器创建,Servlet方法由web服务器调用。
2.2服务器怎么知道Servlet中一定有service方法?
因为我们自定义的Servlet,类必须实现Servlet接口并复写其方法,而Servlet接口中有service方法
3. Servlet 生命周期
Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象 init方法
(@WebServlet(urlPatterns = “/demo”,
loadOnStartup = 1)①负整数:第一次被访问时创建Servlet对象
②0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高)
2.初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次
3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。
4.服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收
package com.nanci.web;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
//servlet接口
@WebServlet(urlPatterns = "/demo2", loadOnStartup = 1)
public class ServletDemo2 implements Servlet {
//初始默认被第一次访问只调用 1次
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init");
}
//提供服务每一次service被访问时调用多次
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("servlet hello world");
}
//销毁 在service销毁 内存释放 服务器关闭 释放资源1次 tomcat正常关闭才能调用
@Override
public void destroy() {
System.out.println("destroy");
}
//获取ServletConfig对象
@Override
public String getServletInfo() {
return null;
}
//获取Servlet信息
@Override
public ServletConfig getServletConfig() {
return null;
}
}
4. Servlet 体系结构
package com.nanci.web;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class MyHttpServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//根据请求方式不同分别处理
HttpServletRequest request = (HttpServletRequest)req;
String method = request.getMethod();
//判断
if("GET".equals(method)){
//get
doGet(req,res);
}else if ("POST".equals(method)){
//post
doPost(req,res);
}
}
protected void doPost(ServletRequest req, ServletResponse res) {
}
protected void doGet(ServletRequest req, ServletResponse res) {
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
package com.nanci.web;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@WebServlet("/demo5")
public class ServletDemo5 extends MyHttpServlet{
@Override
protected void doGet(ServletRequest req, ServletResponse res) {
super.doGet(req, res);
System.out.println("get///");
}
@Override
protected void doPost(ServletRequest req, ServletResponse res) {
super.doPost(req, res);
System.out.println("post///");
}
}
4.1 HttpServlet 使用步骤
①继承HttpServlet
②重写doGet和doPost方法
4.2 HttpServlet原理
获取请求方式,并根据不同的请求方式,调用不同的doXxx方法
5. Servlet urlPattern配置
5.1 Servlet 要想被访问,必须配置其访问路径(urlPattern)
一个Servlet,可以配置多个 urlPattern
5.2 urlPattern 配置规则
精确匹配(/user/selvlet) >目录匹配(/user/) >扩展名匹配(.do) >任意匹配(/ )
6. XML 配置方式编写 Servlet
Servlet 从3.0版本后开始支持使用注解配置,3.0版本前只支持 XML 配置文件的配置方式
6.1 编写 Servlet类
6.2 在 web.xml中配置该Servlet
<web-app>
<servlet>
<servlet-name>demo8</servlet-name>
<servlet-class>com.nanci.web.ServletDemo8</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo8</servlet-name>
<url-pattern>/demo8</url-pattern>
</servlet-mapping>
</web-app>
麻烦没有用注解简单