# 基础写法

# 项目结构

image-20231225002612651

请求写法:

package com.xxx.pms.servlet;

import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.RequestDispatcher;
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;
import java.util.HashMap;
import java.util.Map;

@WebServlet("/login")
public class ServletTest extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
        // 假设这是要转换成 JSON 的数据对象
//        Map<String, Object> data = new HashMap<>();
//        data.put("key1", "value1");
//        data.put("key2", "value2");
//
//        // 转换成 JSON 格式
//        ObjectMapper objectMapper = new ObjectMapper();
//        String jsonData = objectMapper.writeValueAsString(data);
//
//        // 设置响应内容类型为 JSON
//        response.setContentType("application/json");
//        response.setCharacterEncoding("UTF-8");
//
//        // 将 JSON 数据写入响应
//        PrintWriter out = response.getWriter();
//        out.print(jsonData);
//        out.flush();
        req.setAttribute("msg", "hahhaahh");
        RequestDispatcher dispatcher = req.getRequestDispatcher("pages/players.jsp");
        dispatcher.forward(req,response);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取用户名和密码参数
        String username = req.getParameter("username");
        String password = req.getParameter("password");

        // 在控制台打印获取到的用户名和密码
        System.out.println("Username: " + username);
        System.out.println("Password: " + password);

        // 可以在这里进行后续的处理,比如验证用户输入的用户名密码是否正确等
    }

}

# 数据传值不回显?

确保el表达式生效

检查依赖:

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

在jsp页面的文件头加上:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page isELIgnored="false" %>

servlet传值:

   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        要修改的玩家id
        String id = req.getParameter("id");
        try {
            Player player = new Player();
            ResultSet set = playerDao.query("select * from player where id=?", new Object[]{id});
            if (set.next()) {
                player.setId(set.getString(1));
                player.setName(set.getString(2));
                player.setAge(set.getInt(3));
            }
            req.setAttribute("player", player);
            RequestDispatcher dispatcher = req.getRequestDispatcher("pages/player_update.jsp");
            dispatcher.forward(req, resp);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

jsp页面:

                            <form action="/player_update" method="post">
                                <label for="name" class="form-label">姓名:</label>
                                <input required type="text" class="form-control" name="name" id="name"
                                    aria-describedby="helpId" placeholder="请输入姓名..." value="${player.getName()}" />
                                <label for="age" class="form-label">年龄:</label>
                                <input required type="text" class="form-control" name="age" id="age"
                                    aria-describedby="helpId" placeholder="请输入年龄..." value="${player.getAge()}" />
                                <hr>
                                <a href="/promoter">返回</a>
                                <button type="reset" class="btn btn-light">重置</button>
                                <button type="submit" class="btn btn-primary">提交</button>
                            </form>

接收jsp页面的数据时乱码?

技巧:在获取数据前:req.setCharacterEncoding("UTF-8");