如何将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
相关产品推荐
相关产品推荐

