@WebServlet("*.action") public class BaseServlet extends HttpServlet { //C:业务控制层 StudentService studentService = null; public BaseServlet() { studentService = new StudentService(); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1 request.getRequestURI():获取请求url String requestURI = request.getRequestURI(); if(requestURI.endsWith("load.action")){ //登录请求 //1 获取前端数据:request String username = request.getParameter("username"); //2 处理登录业务:JDBC+service+dao+utis Student student = studentService.loadStudent(username); // 3 根据结果响应:response if(student == null){ //登录失败,弹框"登录失败" 回到studentLoad.html } else{ //打印学生信息 } } else if(requestURI.endsWith("regedit.action")){ //注册业务 } } }
时间: 2024-02-15 12:27:58 浏览: 98
这段代码是一个基础的 Servlet 控制器,它通过继承 HttpServlet 类来实现对 HTTP 请求的处理。其中,doGet() 和 doPost() 方法分别处理 GET 和 POST 请求,并且在 doPost() 中调用了 doGet() 方法以统一处理两种类型的请求。
在 doGet() 方法中,首先通过 request.getRequestURI() 方法获取请求的 URL,然后根据 URL 的结尾字符串来判断具体的业务逻辑,例如登录请求和注册请求。对于登录请求,代码通过获取前端传来的用户名并调用 StudentService 类中的 loadStudent() 方法来处理登录业务;对于注册请求,可以在 else if 分支中编写相应的处理逻辑。
需要注意的是,这段代码中的 StudentService 类并没有给出具体的实现,我们只能看出它是一个业务逻辑层的类,用于处理学生信息相关的业务。此外,代码中还有一些注释,说明了一些方法或变量的作用,例如 request.getRequestURI() 方法的作用是获取请求的 URL。
相关问题
@WebServlet(name = "login", value = "*.action") public class CenterController extends HttpServlet
这是一个名为 CenterController 的 Servlet,它会处理所有以 ".action" 结尾的 URL 请求。其中,name 属性为 "login",表示这个 Servlet 的名字是 "login"。Servlet 是 Java Web 应用程序中的一个组件,它可以接收 HTTP 请求并生成 HTTP 响应,通常用于处理动态网页。在这个 Servlet 中,我们可以编写代码来处理用户的登录请求。
//package com.javakc.javaQ.servlet; // //import jakarta.servlet.ServletException; //import jakarta.servlet.annotation.WebServlet; //import jakarta.servlet.http.HttpServlet; //import jakarta.servlet.http.HttpServletRequest; //import jakarta.servlet.http.HttpServletResponse; // //import java.io.IOException; // ///** // * // */ //@WebServlet( // name = "ResponseServlet", // urlPatterns = "/response.do", // loadOnStartup = 0 //) // //public class ResponseServlet extends HttpServlet { // @Override // protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // // } //} package com.javakc.javaQ.servlet; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.*; import java.nio.file.Files; import java.nio.file.Path; @WebServlet( name = "ResponsvleteSer", urlPatterns = "/Sp.do" ) public class ResponseServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String type = req.getParameter("type"); String video = "E:\\学习\\javaQ\\javaQ\\src\\main\\webapp\\views\\yemian\\11.mp4"; Path p = Path.of(video ); byte[] b = Files.readAllBytes(p); resp.setContentType("video/mpeg4"); OutputStream ops = resp.getOutputStream(); System.out.println(b.length); if (type.equals("1")) { ops.write(b); ops.flush(); ops.close(); } if (type.equals("2")) { FileInputStream f=new FileInputStream(video ); byte[] b1=new byte[100]; int len=0; while ((len=f.read(b1))!=-1){ ops.write(b1,0,len); try { Thread.sleep(1); } catch (InterruptedException e) { throw new RuntimeException(e); } ops.flush(); } ops.close(); } } }
这段代码是一个 Java Servlet,在接收到 HTTP 请求后,会根据请求中的参数返回一个 MP4 视频文件给客户端浏览器。
具体来说,当客户端发送一个 HTTP GET 请求到 /Sp.do 路径时,该 Servlet 会读取名为 11.mp4 的视频文件,并根据请求中的 type 参数选择不同的传输方式将视频文件返回给客户端浏览器。
如果 type 参数的值为 "1",则该 Servlet 会将整个视频文件的内容一次性写入输出流中,并关闭输出流。
如果 type 参数的值为 "2",则该 Servlet 会使用分段传输的方式将视频文件的内容逐块写入输出流中,每次写入一小块数据后,会让线程暂停一段时间再继续写入下一块数据,以避免短时间内输出过多数据导致浏览器无法处理的问题。
需要注意的是,在使用 Servlet 返回文件时,必须设置正确的 Content-Type,以确保浏览器能够正确地解析和播放该文件。在该代码中,我们使用 resp.setContentType("video/mpeg4") 来设置返回的文件类型为 MP4 视频。
阅读全文