You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSP传递给Java Servlet的参数存储到文件中

如何将JSP传递给Servlet的参数存储到文件中

哈哈,我看你已经写好JSP的座位选择表单了,接下来咱们搞定把选中的座位参数存到文件里这件事!先把你给出的JSP代码补全展示出来:

我目前已编写的JSP文件代码如下:

<form action = "LogControl" method = "POST">
    <input type="radio" name="seat_selected" value="A1" checked> Seat A1<br>
    <input type="radio" name="seat_selected" value="A2"> Seat A2<br>
    <input type="radio" name="seat_selected" value="A3"> Seat A3<br>
    <br />
    <input type = "submit" value = "Submit" />
</form>

接下来咱们一步步实现LogControl Servlet的逻辑,把参数写入文件:

第一步:编写LogControl Servlet类

这个Servlet要处理表单的POST请求,获取选中的座位参数,然后写入文件。直接上代码,关键地方我都加了注释:

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.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;

@WebServlet("/LogControl") // 这里的路径必须和JSP表单的action属性完全一致
public class LogControl extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 先设置请求编码,防止参数出现乱码(如果以后要加中文座位号也能用)
        request.setCharacterEncoding("UTF-8");
        
        // 从请求中获取选中的座位参数,name要和input的name属性对应
        String selectedSeat = request.getParameter("seat_selected");
        
        // 定义文件存储路径:用项目部署的根目录,这样文件会存在项目文件夹里,方便查找
        String filePath = getServletContext().getRealPath("/") + "seat_records.txt";
        
        // 用try-with-resources语法自动关闭IO流,避免资源泄漏
        try (FileWriter fileWriter = new FileWriter(filePath, true, StandardCharsets.UTF_8);
             PrintWriter printWriter = new PrintWriter(fileWriter)) {
            // 写入内容,加上时间戳会更实用,能看到什么时候选的座位
            printWriter.printf("选中座位:%s | 记录时间:%s%n", 
                selectedSeat, new java.util.Date().toString());
            printWriter.flush();
        } catch (IOException e) {
            e.printStackTrace();
            // 如果写入失败,给前端返回提示信息
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().write("哎呀,存储座位信息失败了:" + e.getMessage());
            return;
        }
        
        // 存储成功后,给前端反馈,或者跳转到成功页面都可以
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("搞定!座位" + selectedSeat + "已经成功记录啦~");
        // 要是想跳转到另一个JSP页面,用下面这句替换上面的反馈:
        // request.getRequestDispatcher("/success.jsp").forward(request, response);
    }
}

第二步:这些细节要注意哦

  • 权限问题:确保服务器对目标文件路径有读写权限,比如Tomcat部署的话,项目目录一般是有权限的,但如果用自定义的绝对路径(比如C:/seat_logs/),要提前创建目录并给权限。
  • 编码统一:不管是请求参数还是文件写入,都用UTF-8编码,避免乱码问题。
  • 文件追加模式:FileWriter的第二个参数true表示追加写入,这样每次提交的内容都会加到文件末尾,不会覆盖之前的记录。
  • 资源自动关闭:用try-with-resources语法,不需要手动关闭流,Java会自动处理,减少bug。

测试一下

启动你的Web项目,选中一个座位点击提交,然后去项目的部署目录里找seat_records.txt,打开就能看到你记录的座位信息啦!

内容的提问来源于stack exchange,提问作者user1427806

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:29:38