Servlet (二) 开发步骤
2025-02-24 本文已影响0人
第二心跳
1.前提
Idea 配置好了 tomcat (包括引入tomcat的jar 包)以及给项目添加 java web模块
2.步骤: 4步
- 编写一个Servlet功能的类, 并 继承 HttpServlet
- 重写 doGet() 或 doPost() 方法 , 如果重写service()方法 不会触发 405机制
- 将Servlet功能的这个类,配置到 web.xml 文件中
- 准备好前端页面 (index.html), 在 前端页面请求 该路径即可
3. 如果没有 index.html 默认访问的页面路径配置
<welcome-file>内的路径不需要加 " / " ,因为默认会从应用的根路径开始查找
<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">
<!-- welcome-file 中的内容就是默认访问的页面路径 从上到下依次查找 -->
<welcome-file-list>
<welcome-file>A.html</welcome-file>
<welcome-file>B.jsp</welcome-file>
<welcome-file>C.do</welcome-file>
</welcome-file-list>
</web-app>
4. Servlet @WebServl et :注解开发 省去手动书写 web.xml
value 或 urlPatterns 配置的是 Servlet 的映射路径 这个值是数组,当元素只有一个 {} 可以省略
// name 配置 Servlet 的名字
// value 或 urlPatterns 配置的是 Servlet 的映射路径 这个值是数组,当元素只有一个 {} 可以省略
@WebServlet(
name = "MyServlet",
value= {"/myServlet", "/myServlet/*"},
initParams = {
@WebInitParam(name = "param1", value = "value1"),
@WebInitParam(name = "param2", value = "value2")
}
)
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
}
}
如果 Servlet 的name 和 映射路径同名 前面的key 可以省略
//当 Servlet 的name 和value 的值一致,都是 MySerlvet 可以省略
@WebServlet("/MyServlet") // @WebServlet({"/MyServlet", "/MyServlet2"}) 也是可以的
initParams = {
@WebInitParam(name = "param1", value = "value1"),
@WebInitParam(name = "param2", value = "value2")
}
)
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
}
}
5. Servlet 通过注解进行模版开发
原理:
1.在@WebServlet 中对同一数据不同处理的操作配置对应操作路径
2.再通过获取路径方式进行判断 执行对应路径的操作
@WebServlet({ "/oa/add", "/oa/edit", "/oa/delete", "/oa/update" } // 创建不同路径 也可以使用 " oa/* " 然后在 判断 oa/ 后面的值进行判断
)
public class CRUDServletTemplate extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取 Servlet 路径
String servletPath = request.getServletPath();
// 根据 Servlet 路径调用相应的方法
switch (servletPath) {
case "/oa/add":
add(request, response);
break;
case "/oa/edit":
edit(request, response);
break;
case "/oa/delete":
delete(request, response);
break;
case "/oa/update":
update(request, response);
break;
default:
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid path");
break;
}
}
private void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 处理新增操作
}
private void edit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 处理编辑操作
}
private void delete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 处理删除操作
}
private void update(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 处理更新操作
}
}