今日内容
0 复习昨日
1 Servlet基础
1.1 Servlet介绍
1.2 第一个Servlet
1.3 流程分析
1.4 使用细节
1.5 映射细节
1.6 生命周期
2 HttpServlet
2.1 HTTP请求、响应、状态码
2.2 GET和POST的区别
2.3 HttpServlet
0 复习昨日
1 maven创建-java项目结构
2 maven创建-javaweb项目结构
3 tomcat的端口 8080
ip: 地址,通过地址找到这台电脑/服务器
端口: 应用程序的编号,通过端口找到app4 tomcat服务器部署项目启动后,
访问路径
是?
协议://ip:端口/项目名/页面
http://localhost:8080/day45_web/index.html
http://localhost:8080/index.html5 addres localhost:8080 is already in use 什么意思
端口占用,解决方案:
1)端口查杀
netstat -ano | findstr 8080
taskkill /f /pid 进程号
2)改端口号
(我们自己设计端口,最好是8000以上
3) artifact 工件/项目
dependencies 依赖,复数
dependency 依赖,单数
1 Servlet
1.1 介绍
javaweb开发,就是需要服务器
接收前端发送的请求
,以及请求中的数据,经过处理(jdbc操作),然后向浏览器做出响应
.
我们要想在服务器中写java代码来接收请求,做出响应,我们的java代码就得遵循tomcat开发规范
因此Tomcat提供了开发的规范,就是servlet.
Servlet就是运行在服务器上的程序,可交互式的接收服务器的请求,并可以做出响应
总结Servlet的作用:
- 运行在服务器,是一个服务器端的程序
- 接收客户端请求,向客户端做出响应
- 动态网页(jsp)
1.2 第一个Servlet程序
1.2.1 创建web项目
补全目录结构
1.2.2 pom依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qf</groupId>
<artifactId>day46_servlet</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- java项目打包方式是jar包 -->
<!-- web项目打包方式是war包 -->
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<!-- 引入servlet依赖 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<!-- 引入jsp依赖 -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
</project>
1.2.3 编写Servlet
- 实现javax.servlet.Servlet接口
- 重写方法
- 在核心方法service()里面完成接收请求,做出响应
package com.qf.servlet;
import javax.servlet.*;
import java.io.IOException;
/**
* --- 天道酬勤 ---
*
* @author QiuShiju
* @desc
*/
public class MyServlet1 implements Servlet {
@Override
public void init(ServletConfig config) throws ServletException {}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* 核心方法,服务,在这个方法中可以完成接收请求,做出响应
* @param req 用来处理请求的对象
* @param res 用来处理响应的对象
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// 通过请求对象,可以获得请求的ip
String ip = req.getRemoteAddr( );
System.out.println("ip = "+ip );
// 响应,
// res.getWriter()获得字符输出流
// .writer() 写出到浏览器字符(中文可能乱码)
res.getWriter().write("i'm Response,Hello");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {}
}
1.2.4 配置Servlet
因为服务器中会有很多servlet,浏览器发请求如何确定访问哪一个servlet?
此时就需要做一个映射: 请求路径和servlet类的映射,即发出的请求由哪个servlet类来处理
配置需要写在webapp/WEB-INF/web.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_3_1.xsd"
version="3.1">
<!-- 在这里写路径和servlet映射 -->
<servlet>
<!-- servlet的名字,任意 -->
<servlet-name>servlet1</servlet-name>
<!-- servlet的路径 -->
<servlet-class>com.qf.servlet.MyServlet1</servlet-class>
</servlet>
<!-- 请求路径映射 -->
<servlet-mapping>
<!-- 该路径映射的servlet名 -->
<servlet-name>servlet1</servlet-name>
<!-- 请求路径的模板,一定要/开头 -->
<url-pattern>/s1</url-pattern>
</servlet-mapping>
</web-app>
浏览器发出请求,经过web.xml中配置的信息,
- 匹配url-pattern>/s1</url-pattern,有该路径则正常访问,无该路径报404
- 通过servlet-name找到servlet类
- 再通过servlet-class,找到servlet类路径
- 该servlet就可以执行service()
1.2.5 部署项目
web项目已经开发完毕,将项目部署到服务器Tomcat
配置Tomcat
部署项目
启动
发出请求
http://localhost:8080/day46/s1