JavaWeb编程入门
Servlet
Tomcat
基本使用
Apache Tomcat? - Welcome!

IDEA集成
Web配置:
Tomcat配置:
启动查看:
Title
This is a test page!
重新修改配置:
- 端口号:8000 --> 8080
- 应用程序上下文
Servlet
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.liangjiajia
servlet
1.0-SNAPSHOT
8
8
aliyun
aliyun
https://maven.aliyun.com/repository/public
javax.servlet
javax.servlet-api
3.1.0
FirstServlet.java
package com.liangjiajia.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class FirstServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String res = "hi," + name + "!
";
System.out.println(res);
PrintWriter out = resp.getWriter();
out.println(res);
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
first
com.liangjiajia.servlet.FirstServlet
first
/first
request --> url --> name -> class -> response
Servlet工程目录
- /:Java Web根目录
- MATE-INF
- MANIFEST.MF:Web应用的版本信息
- WEB-INF:Web应用安全目录
- classes:编译后产生的class
- lib:Web应用依赖
- web.xml:部署描述符文件
- index.html:默认首页
- MATE-INF
Servlet开发步骤
- 创建Java类,继承HttpServlet
- 重写service方法
- 处理请求
- 生成响应
- 重写service方法
- 配置web.xml,绑定访问地址
SampleServlet.java
package com.liangjiajia.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class SampleServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1.处理请求中的用户数据
String name = req.getParameter("name");
String mobile = req.getParameter("mobile");
//2.通过响应返回结果
PrintWriter out = resp.getWriter();
out.println("name:" + name + "
");
out.println("mobile:" + mobile + "
");
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
first
com.liangjiajia.servlet.FirstServlet
first
/first
sample
com.liangjiajia.servlet.SampleServlet
sample
/sample
Servlet其他
请求参数
-
单个:
getParameter -
多个:
getParameterValues
studen.html
学员信息登记表
学员信息登记表
StudentServlet.java
package com.liangjiajia.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class StudentServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
String mobile = request.getParameter("mobile");
String sex = request.getParameter("sex");
String[] specs = request.getParameterValues("spec");
PrintWriter out = response.getWriter();
out.println("name:" + name + "
");
out.println("mobile:" + mobile + "
");
out.println("sex:" + sex + "
");
for (String spec : specs) {
out.println("spec:" + spec + "
");
}
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
first
com.liangjiajia.servlet.FirstServlet
first
/first
sample
com.liangjiajia.servlet.SampleServlet
sample
/sample
student
com.liangjiajia.servlet.StudentServlet
student
/student
提交后
请求方法
-
Get:不包含敏感信息的查询
-
Post:安全性要求较高的“写”操作
处理方法:
-
所有请求 – service()方法
-
Get请求 - doGet()方法
-
Post请求 – doPost()方法
RequestMethodServlet.html
package com.liangjiajia.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class RequestMethodServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
PrintWriter out = response.getWriter();
out.println("GET:name:" + name + "
");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
PrintWriter out = response.getWriter();
out.println("POST:name:" + name + "
");
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
first
com.liangjiajia.servlet.FirstServlet
first
/first
sample
com.liangjiajia.servlet.SampleServlet
sample
/sample
student
com.liangjiajia.servlet.StudentServlet
student
/student
requestMethod
com.liangjiajia.servlet.RequestMethodServlet
requestMethod
/request_method
选用不同的方法
request_method.html
Title
get 方法
Title
post 方法
Title
Servlet 生命周期
-
装载–web.xml
-
创建–构造方法
-
初始化-init()
-
提供服务–service()
-
销毁–destory()
Servlet:单例多线程
注解配置 Servlet
替换手动配置,使用注解说明
AnnotationServlet.java:
package com.liangjiajia.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/anno")
public class AnnotationServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("I'm annotation servlet!!");
}
}
Servlet 进阶
- URL统一资源定位符,表示Web应用对外暴露的访问地址
- http://www.baidu.com/index.html
- URI统一资源标示符,表示Web应用资源的访问路径
- /index.html
Web 请求与响应解析
HTTP请求
request.html
Title
RequestServlet.java
package com.liangjiajia.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class RequestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("This is get method");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("This is post method");
}
}
request.html
<?xml version="1.0" encoding="UTF-8"?>
request
com.liangjiajia.servlet.RequestServlet
request
/request
采用get方式后:
采用post方式后:
多端应用
UserAgentServlet.java
package com.liangjiajia.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ua")
public class UserAgentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String ua = request.getHeader("User-Agent");
if (ua == null) {
response.getWriter().println("User-Agent请求头不存在");
return;
}
String output = "";
if (ua.toLowerCase().indexOf("windows nt") != -1) {
output = "这是PC端页面
";
} else if (ua.toLowerCase().indexOf("iphone") != -1 || ua.toLowerCase().indexOf("android") != -1) {
output = "这是移动端页面
";
}
response.getWriter().println(output);
}
}
HTTP响应
-
响应行
-
响应头
-
响应体
HTTP常见状态码
| 状态码 | 错误描述 |
|---|---|
| 200 | 成功 |
| 404 | 资源没有找到 |
| 500 | 内部错误 |
| 403 | 拒绝访问 |
| 400 | 无效请求 |
| 401 | 未经授权 |
| 503 | 服务器超负载或正停机处理,无法处理请求 |
ContentType
ContentType:决定浏览器采用何种方式对响应体进行处理。
ContentTypeServlet.java
package com.liangjiajia.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/ct")
public class ContentTypeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String output = "百度
";
response.setContentType("text/html;charset=utf-8");
response.getWriter().println(output);
}
}
请求转发
login.html
Title
CheckLoginServlet.java
package com.liangjiajia.servlet.forward;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/login")
public class CheckLoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("admin") && password.equals("123456")) {
System.out.println("用户登录成功");
response.sendRedirect("/index");
} else {
System.out.println("用户登录失败");
}
}
}
IndexServlet.java
package com.liangjiajia.servlet.forward;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("首页......");
}
}
响应重定向
会出现:
要为重定向的servlet添加get方法(这是重定向的默认方法)
login.html
Title
CheckLoginServlet.java
package com.liangjiajia.servlet.forward;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/login")
public class CheckLoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("admin") && password.equals("123456")) {
System.out.println("用户登录成功");
response.sendRedirect("/index");
} else {
System.out.println("用户登录失败");
}
}
}
IndexServlet.java
package com.liangjiajia.servlet.forward;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("首页......");
}
}
内置对象
CheckLoginServlet.java
package com.liangjiajia.servlet.forward;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/login")
public class CheckLoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("admin") && password.equals("123456")) {
System.out.println("用户登录成功");
request.setAttribute("username", username);
request.getRequestDispatcher("/index").forward(request, response);
} else {
System.out.println("用户登录失败");
}
}
}
IndexServlet.java
package com.liangjiajia.servlet.forward;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
String username = (String) request.getAttribute("username");
response.getWriter().println("首页......" + username);
}
}
设置自定义请求属性只适合请求转发,不适合重定向。(要使用类似操作,参考session)
Cookie
Cookie
设置 Cookie
response.addCookie(cookie)
RandomServlet.java
package com.liangjiajia.servlet.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Random;
@WebServlet("/cookie/random")
public class RandomServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer random = new Random().nextInt(10000);
Cookie cookie = new Cookie("random", String.valueOf(random));
cookie.setMaxAge(60 * 60 * 24);
response.addCookie(cookie);
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("随机数" + random + "已生成
");
}
}
获取 Cookie
request.getCookies()
CookieServlet.java
package com.liangjiajia.servlet.cookie;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/cookie/show")
public class CookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookies = request.getCookies();
Integer random = -1;
response.setContentType("text/html;charset=utf-8");
if (cookies == null) {
response.getWriter().println("未包含任何Cookie数据");
return;
}
for (Cookie c : cookies) {
if (c.getName().equals("random")) {
random = Integer.parseInt(c.getValue());
}
}
response.getWriter().println("name=random的cookie值为:" + random);
}
}
注意Cookie的时效性!
Session
-
request.getSession():获取Session对象 -
get|set|removeAttribute():获取|设置|删除Session属性 -
setMaxlnactivelnterval():设置Session超时时间
设置 Session
RandomServlet.java
package com.liangjiajia.servlet.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.Random;
@WebServlet("/session/random")
public class RandomServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Integer random = new Random().nextInt(10000);
HttpSession session = request.getSession();
session.setAttribute("random" , random);
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("随机数" + random + "已生成
");
}
}
获取 Session
SessionServlet.java
package com.liangjiajia.servlet.session;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/session/show")
public class SessionServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
Integer random = (Integer) session.getAttribute("random");
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("name=random的session值为:" + random);
}
}
执行原理
CheckLoginServlet.java
package com.liangjiajia.servlet.forward;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/login")
public class CheckLoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
if (username.equals("admin") && password.equals("123456")) {
System.out.println("用户登录成功");
HttpSession session = request.getSession();
session.setAttribute("username", username);
response.sendRedirect("/index");
} else {
System.out.println("用户登录失败");
}
}
}
IndexServlet.java
package com.liangjiajia.servlet.forward;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebServlet("/index")
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");
response.getWriter().println("首页......" + username);
}
}
Context
ServletContext
ServletContextInitServlet.java
package com.liangjiajia.servlet.servletcontext;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/servletcontext/init")
public class ServletContextInitServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = request.getServletContext();
servletContext.setAttribute("copyright", "Copyright? 2021 imooc.com 京ICP备 12003892号-11 京公网安备11010802030151号");
response.setContentType("text/html;charset=utf-8");
response.getWriter().println("ServletContext已初始化");
}
}
IndexServlet.java
package com.liangjiajia.servlet.servletcontext;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/servletcontext/index")
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
ServletContext context = request.getServletContext();
String copyright = (String) context.getAttribute("copyright");
PrintWriter out = response.getWriter();
out.println("导航栏");
out.println("
");
out.println("首页正文");
out.println("
");
out.println(copyright);
}
}
实践
中文乱码
- GET
- Tomcat 8以后,默认对GET请求发送的参数视为UTF-8编码
- Tomcat 8以前,默认对GET请求发送的参数视为ISO-8859-1
- POST
- 手动指定
SearchServlet.java
package com.liangjiajia.servlet.encoding;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/encoding/search")
public class SearchServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String keyword = request.getParameter("keyword");
System.out.println(keyword);
response.setContentType("text/html;charset=utf-8");
response.getWriter().println(keyword);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String keyword = request.getParameter("keyword");
System.out.println(keyword);
response.setContentType("text/html;charset=utf-8");
response.getWriter().println(keyword);
}
}
web.xml相关
默认首页
<?xml version="1.0" encoding="UTF-8"?>
index.html
default.html
request
com.liangjiajia.servlet.RequestServlet
request
/request
Servlet相关
通配符映射
web.xml
<?xml version="1.0" encoding="UTF-8"?>
index.html
default.html
request
com.liangjiajia.servlet.RequestServlet
request
/request
pattern
com.liangjiajia.servlet.PatternServlet
pattern
/class/*
PatternServlet.java
package com.liangjiajia.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class PatternServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri = request.getRequestURI();
String id = uri.substring(uri.lastIndexOf("/") + 1);
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("");
if (id.equals("785")) {
out.println("Java");
} else if (id.equals("786")) {
out.println("C#");
} else {
out.println("......");
}
out.println("
");
}
}
启动时加载Servlet
InitTableServlet.java
package com.liangjiajia.servlet.startup;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class InitTableServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException {
String database = config.getInitParameter("database");
System.out.println("正在向" + database + "创建数据表...");
}
}
ImportServlet.java
package com.liangjiajia.servlet.startup;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
public class ImportServlet extends HttpServlet {
@Override
public void init(ServletConfig config) throws ServletException {
String file = config.getInitParameter("file");
System.out.println("正在导入" + file + "文件数据...");
}
}
web.html
<?xml version="1.0" encoding="UTF-8"?>
index.html
default.html
request
com.liangjiajia.servlet.RequestServlet
request
/request
pattern
com.liangjiajia.servlet.PatternServlet
pattern
/class/*
initTable
com.liangjiajia.servlet.startup.InitTableServlet
database
db01
0
import
com.liangjiajia.servlet.startup.ImportServlet
file
tem.txt
1
状态码默认页面
404.html
Title
抱歉,您访问的页面不存在!
500.html
Title
服务器内部发生错误,请联系系统管理员,联系方式:....
web.html
<?xml version="1.0" encoding="UTF-8"?>
index.html
default.html
request
com.liangjiajia.servlet.RequestServlet
request
/request
pattern
com.liangjiajia.servlet.PatternServlet
pattern
/class/*
initTable
com.liangjiajia.servlet.startup.InitTableServlet
database
db01
0
import
com.liangjiajia.servlet.startup.ImportServlet
file
tem.txt
1
404
/error/404.html
500
/error/500.html
JavaWeb打包
-
Java Web应用采用war包进行发布
-
发布路径为:{TOMCAT_HOME}/webapps
-
利用Maven实现war包导出
Maven的Scope属性
| Scope | 描述 |
|---|---|
| compile | 默认值,依赖组件作用于所有阶段 |
| provided | 依赖组件仅作用在编译与测试阶段 |
| runtime | 依赖组件仅作用在测试与运行阶段 |
| test | 依赖组件仅作用在测试阶段 |
| system | 本地Jar文件仅作用在编译与测试阶段 |
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
4.0.0
com.liangjiajia
servlet
1.0-SNAPSHOT
8
8
war
aliyun
aliyun
https://maven.aliyun.com/repository/public
javax.servlet
javax.servlet-api
3.1.0
provided
web-servlet
打包
复制到webapps目录下
修改上下文
启动tomcat