Servlet JSP 衔接核心笔记

发布时间:2026/7/16 10:24:48

Servlet  JSP 衔接核心笔记 本笔记核心解决Servlet 负责后台逻辑JSP 负责前端展示二者如何配合工作是 Web 开发从单一技术到整合开发的关键一、核心定位与本质关系1. 分工原则黄金规则Servlet控制器Controller专注处理请求、业务逻辑、数据运算、数据库操作不写页面展示代码。JSP视图View专注页面渲染、数据展示不写复杂业务逻辑。2. 底层本质JSP 本质就是Servlet服务器会把 JSP 编译为 Servlet 字节码运行二者共用一套 Web 容器环境无缝共享域对象、请求 / 响应对象。3. 为什么要衔接纯 ServletJava 代码中写 HTML维护极难纯 JSPHTML 中写大量 Java 代码混乱不堪ServletJSP逻辑与视图分离代码简洁、易维护。二、衔接核心四大域对象数据传递桥梁Servlet 和 JSP共享同一套域对象这是二者数据传递的唯一通道表格域对象对应类作用范围生命周期适用场景pageContextPageContext当前 JSP 页面页面渲染完成页面内部数据requestHttpServletRequest一次请求 / 转发请求响应结束Servlet→JSP 传递数据最常用sessionHttpSession一次浏览器会话关闭浏览器 / 超时用户登录信息、跨请求数据applicationServletContext整个 Web 应用服务器启动关闭全局数据、在线人数✅衔接首选request域Servlet 存数据转发到 JSP 取数据三、核心协作流程数据流转全链路标准衔接流程前后端交互闭环客户端访问 JSP 页面 / 提交表单请求发送到 ServletServlet获取参数 → 处理业务 → 数据存入域对象 → 跳转到 JSPJSP从域对象取出数据 → 渲染页面 → 响应给客户端plaintext浏览器 ⇄ JSP视图 ⇄ Servlet控制器 ⇄ 业务/数据四、衔接关键Servlet ↔ JSP 跳转与数据传递1. Servlet → JSP 后台传数据到前台展示方式 1请求转发推荐核心衔接方式特点一次请求地址栏不变request 域数据共享用法java运行// Servlet 中存数据到 request 域 request.setAttribute(key, 数据); // 转发到 JSP request.getRequestDispatcher(/xxx.jsp).forward(request, response);JSP 中取数据jsp%-- 脚本表达式 --% % request.getAttribute(key) % %-- EL 表达式简化推荐 --% ${key}方式 2重定向不共享数据特点两次请求地址栏改变request 域数据丢失适用登录成功、退出登录无需传递数据java运行response.sendRedirect(index.jsp);2. JSP → Servlet 前台提交数据到后台处理方式 1表单提交最常用jspform actionloginServlet methodpost 用户名input typetext nameusername button typesubmit提交/button /form方式 2超链接 / URL 传参jspa hrefuserServlet?name张三查看用户/aServlet 接收数据java运行String username request.getParameter(username);五、标准开发模式MVC 雏形ServletJSP 官方规范衔接开发的最佳架构直接对应MModelJavaBean / 实体类封装数据、业务逻辑VViewJSP页面展示CControllerServlet请求控制、逻辑处理MVC 执行流程客户端请求 → ServletControllerServlet 调用 Model 处理数据Servlet 将结果存入域对象转发到 JSPJSP 渲染数据响应客户端六、衔接开发规范避坑指南Servlet 绝不输出 HTML只处理逻辑和跳转JSP 绝不写复杂 Java 代码只用 ELJSTL 展示数据数据传递优先用request 域 请求转发全局编码用Filter 过滤器统一处理避免 Servlet/JSP 乱码JSP 尽量放在WEB-INF目录下保护页面只能通过 Servlet 访问。七、完整衔接实战案例登录功能1. 项目结构plaintextsrc └── com.servlet.LoginServlet控制器 webapp ├── login.jsp登录视图 └── index.jsp首页视图2. login.jsp视图提交数据jsp% page contentTypetext/html;charsetUTF-8 % form actionlogin methodpost 用户名input nameusernamebr 密码input namepassword typepasswordbr button登录/button /form3. LoginServlet控制器处理逻辑 传数据java运行WebServlet(/login) public class LoginServlet extends HttpServlet { Override protected void doPost(HttpServletRequest request, HttpServletResponse response) { // 1. 获取JSP提交的参数 String username request.getParameter(username); String password request.getParameter(password); // 2. 业务判断 if(admin.equals(username) 123456.equals(password)){ // 登录成功存入session域 request.getSession().setAttribute(user, username); // 重定向到首页 response.sendRedirect(index.jsp); }else{ // 登录失败存入request域转发回登录页 request.setAttribute(msg, 账号密码错误); request.getRequestDispatcher(/login.jsp).forward(request, response); } } }4. index.jsp视图展示数据jsp% page contentTypetext/html;charsetUTF-8 % h2欢迎${user}/h2 a hreflogoutServlet退出登录/a5. 登录页展示错误信息jsp%-- 显示Servlet传递的错误信息 --% p stylecolor:red${msg}/p八、核心衔接知识点总结分工Servlet 管逻辑JSP 管展示数据传递request域 请求转发是核心跳转转发共享数据、重定向不共享模式MVC 是 ServletJSP 标准开发模式简化JSP 用 ELJSTL 替代 Java 脚本配合 Servlet 开发。

相关新闻