最近在学习 Java Web 开发相关的知识,写了一个小 demo 实现 HTML 与 Servlet 之间的简单交互。
在客户端输入以下字段(图1),点击“提交后”,会跳转到一个新页面,并显示刚刚输入的信息(图2)。
![]()
图1
图2
Servlet 代码:
- import javax.servlet.http.HttpServlet;
复制代码- import javax.servlet.http.HttpServletRequest;
复制代码- import javax.servlet.http.HttpServletResponse;
复制代码- [/code][code]public class MyServlet extends HttpServlet {
复制代码- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
复制代码- Map m = req.getParameterMap();
复制代码- resp.setContentType("text/html;charset=gbk"); // 一定要注意这句代码的顺序,必须放在 PrintWriter 声明之前,否则没效果,中文会在浏览器上输出问号
复制代码- PrintWriter writeToClient = resp.getWriter();
复制代码- [/code][code] writeToClient.println("MCL" +
复制代码- for (Map.Entry en : m.entrySet()){
复制代码- System.out.println(en.getKey());
复制代码- writeToClient.println("" + en.getKey() + "");
复制代码- for (int i = 0 ; i < en.getValue().length ; i++){
复制代码- System.out.print(en.getValue()[i] + " ");
复制代码- writeToClient.println("" + en.getValue()[i]);
复制代码- writeToClient.println("");
复制代码 这里获取客户端参数是用的 Map,还有几种其他的方式。
这里有一个要注意的地方就是,第 13 行与第 14 行的顺序不能颠倒,ContentType 的设置必须在 PrintWriter 的声明之前,否则设置无效,会导致中文显示出现问题(显示为问号)。
HTML 代码:
指定 action 对应的 Servlet,指定 method。
|
|