Java学习第四十九部分——Web开发(十七)

目录

一、核心原理解析

1. 网络通信层

2. 数据交换格式

3. Java后端处理流程 (tomcat为例)

二、关键技术实现

1. Servlet规范(底层机制) 

2. Spring MVC框架(现代开发)

3. AJAX异步交互(前端)  

三、常见场景使用

1. 文件上传/下载 

2. WebSocket实时通信  

3. 跨域处理(CORS) 

4. 安全防护 

四、实战项目详解

五、现代演进趋势


一、核心原理解析

       JavaWeb前后端交互的本质是“基于HTTP协议的请求-响应模型”,通过标准化接口实现数据交换。其技术栈可分为以下三个层级:

1. 网络通信层

   - **HTTP/HTTPS协议**:基于TCP/IP,通过URL定位资源,使用请求方法(GET/POST/PUT/DELETE等)定义操作类型。  
   - **会话管理**:  
     - **Cookie**:客户端存储(4KB限制),每次请求自动携带(如`JSESSIONID`)。  
     - **Session**:服务端存储(默认30分钟过期),通过Cookie或URL重写传递ID。  
     - **Token机制**:JWT(JSON Web Token)实现无状态认证,通过`Authorization`头传递。

2. 数据交换格式

   - **JSON**:主流格式(如`{"username":"admin","role":"USER"}`),使用Jackson或Gson解析。  
   - **XML**:老项目可能使用(如SOAP),通过JAXB处理。  
   - **表单编码**:`application/x-www-form-urlencoded`(如`name=Tom&age=20`)。

3. Java后端处理流程 (tomcat为例)

   A[浏览器发起请求] --> B[Tomcat接收请求]
   B --> C[Filter链(如登录校验)]
   C --> D[DispatcherServlet前端控制器]
   D --> E[HandlerMapping定位Controller]
   E --> F[Controller业务逻辑]
   F --> G[Service层事务处理]
   G --> H[DAO层数据库操作]
   H --> I[返回ModelAndView或JSON]
   I --> J[视图解析器渲染]
   J --> K[HTTP响应返回浏览器]

二、关键技术实现

1. Servlet规范(底层机制) 

  @WebServlet("/api/user")
   public class UserServlet extends HttpServlet {
       protected void doGet(HttpServletRequest req, HttpServletResponse resp) {
           String userId = req.getParameter("id");
           resp.setContentType("application/json");
           resp.getWriter().write("{\"id\":" + userId + "}");
       }
   }

2. Spring MVC框架(现代开发)

   @RestController
   @RequestMapping("/api")
   public class UserController {
       @Autowired
       private UserService userService;

       @GetMapping("/user/{id}")
       public ResponseEntity<User> getUser(@PathVariable Long id) {
           User user = userService.findById(id);
           return ResponseEntity.ok(user);
       }

       @PostMapping("/user")
       public ResponseEntity<Void> addUser(@Valid @RequestBody UserDTO dto) {
           userService.save(dto);
           return ResponseEntity.created(URI.create("/api/user/" + dto.getId())).build();
       }
   }

3. AJAX异步交互(前端)  

  fetch('/api/user/1', {
     method: 'GET',
     headers: {
       'Authorization': 'Bearer ' + localStorage.getItem('jwt')
     }
   })
   .then(res => res.json())
   .then(data => console.log(data))
   .catch(err => console.error(err));

三、常见场景使用

1. 文件上传/下载 

   - **上传**:使用`MultipartFile`接收(需配置`CommonsMultipartResolver`)。  
   - **下载**:设置`Content-Disposition`头(如`attachment; filename="report.pdf"`)。

2. WebSocket实时通信  

   @ServerEndpoint("/chat/{room}")
   public class ChatEndpoint {
       @OnMessage
       public void onMessage(String message, Session session) {
           // 广播消息到同房间所有客户端
       }
   }

3. 跨域处理(CORS) 

  @Configuration
   public class CorsConfig {
       @Bean
       public WebMvcConfigurer corsConfigurer() {
           return new WebMvcConfigurer() {
               public void addCorsMappings(CorsRegistry registry) {
                   registry.addMapping("/api/**")
                           .allowedOrigins("https://frontend.com")
                           .allowedMethods("GET", "POST")
                           .allowCredentials(true);
               }
           };
       }
   }

4. 安全防护 

   - **XSS防护**:使用Spring Security的`X-XSS-Protection`头。  
   - **CSRF防御**:Spring Security默认对表单提交启用CSRF Token。  
   - **SQL注入**:MyBatis的`#{}`预编译参数。

四、实战项目详解

   以用户登录系统为例:

    浏览器->>前端: 输入用户名密码
    前端->>后端: POST /api/login {username, password}
    后端->>数据库: 验证用户凭据
    数据库-->>后端: 返回用户ID
    后端->>后端: 生成JWT Token
    后端-->>前端: 200 OK {token: "eyJhbGciOi..."}
    前端->>localStorage: 存储Token
    前端->>后端: GET /api/profile (携带Authorization头)
    后端->>后端: 验证Token有效性
    后端-->>前端: 返回用户详情

五、现代演进趋势

1. **前后端分离**:Vue/React + Spring Boot成为主流。  
2. **微服务**:Dubbo/Spring Cloud实现服务拆分,通过OpenFeign调用。  
3. **Serverless**:AWS Lambda运行Java函数处理API请求。  
4. **响应式编程**:Spring WebFlux + R2DBC实现非阻塞IO。

通过以上技术栈的有机组合,JavaWeb能够支撑从简单CRUD到高并发分布式系统的全场景需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值