java - 如何在 Servlet doPOst 上使用 JSP?

标签 java jsp servlets

我刚开始使用 JSP 和 Servlet,我正在尝试为设备制作 Controller 。一个带有 4 个按钮的简单页面。每次单击其中一个按钮时,用户应该看到显示的内容(根据按下的按钮)。我试图通过使用 Servlet 和 JSP 来做到这一点。我不确定这是否是一个好方法,但问题是我做得不好,因为当我运行我的应用程序时,我可以看到 4 个按钮,但单击它们时没有任何反应。我做错了什么?对于另一种方法的一些建议,我将不胜感激。

主服务小程序

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class CheckTemperature
 */
@WebServlet("/CheckTemperature")
public class MainServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;


    /**
     * @see HttpServlet#HttpServlet()
     */
    public MainServlet() {
        super();      
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Check tempetaure</title></head>");
        out.println("<body>");
        out.println("<input type=\"submit\" value=\"Check temperature\" name=\"button\"/>");
        out.println("<input type=\"submit\" value=\"Get AC state\" name=\"button\"/>");
        out.println("<input type=\"submit\" value=\"Turn ON AC\" name=\"button\"/>");
        out.println("<input type=\"submit\" value=\"Turn OFF AC\" name=\"button\"/>");
        out.println("</body>");
        out.println("</html>");     
    }
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        String button = request.getParameter("button");
        if(button.equalsIgnoreCase("Check temperature")){
            request.getRequestDispatcher("/WEB-INF/jsps/checkTemperature.jsp").include(request, response);
        } else if(button.equalsIgnoreCase("Get AC state")){
            request.getRequestDispatcher("/WEB-INF/jsps/acState.jsp").include(request, response);
        } else if(button.equalsIgnoreCase("Turn ON AC")){
            request.getRequestDispatcher("/WEB-INF/jsps/turnOn.jsp").include(request, response);
        } else if(button.equalsIgnoreCase("Turn OFF AC")){
            request.getRequestDispatcher("/WEB-INF/jsps/turnOff.jsp").include(request, response);
        }           
    }    
}

网络.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>ArduinoController</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>ACController</display-name>
    <servlet-name>MainServlet</servlet-name>
    <servlet-class>ro.dnad.controller.MainServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>MainServlet</servlet-name>
    <url-pattern>/main</url-pattern>
  </servlet-mapping>
</web-app>

检查温度.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="ro.dnad.controller.EthernetACDriver" %>

<%EthernetACDriver driver = new EthernetACDriver("localhost",8080); %>
<%double temp = driver.getTemperature() * 5; %>
<%=temp%>

acState.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="ro.dnad.controller.EthernetACDriver" %>

<%EthernetACDriver driver = new EthernetACDriver("localhost",8080); %>
<%=driver.ACStatus()%>

关闭.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="ro.dnad.controller.EthernetACDriver" %>

<%EthernetACDriver driver = new EthernetACDriver("localhost",8080); %>
<%driver.sendMessage(3); %>
<%=driver.ACStatus()%>

turnOfn.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ page import="ro.dnad.controller.EthernetACDriver" %>

<%EthernetACDriver driver = new EthernetACDriver("localhost",8080); %>
<%driver.sendMessage(2); %>
<%=driver.ACStatus()%>

最佳答案

  • 首先,您应该使用 JSP 而不是使用 servlet 来创建动态内容
  • 要使您的代码运行,您需要在表单内添加每个提交。然后只有提交按钮会起作用。

代码示例:

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>Check tempetaure</title></head>");
        out.println("<body>");
        out.println("<form action='CheckTemperature' method='post'>");

        out.println("<input type=\"submit\" value=\"Check temperature\" name=\"button\"/>");
        out.println("<form />");
        out.println("<input type=\"submit\" value=\"Get AC state\" name=\"button\"/>");
        out.println("<input type=\"submit\" value=\"Turn ON AC\" name=\"button\"/>");
        out.println("<input type=\"submit\" value=\"Turn OFF AC\" name=\"button\"/>");
        out.println("</body>");
        out.println("</html>");     
    }

关于java - 如何在 Servlet doPOst 上使用 JSP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22964601/

相关文章:

Java - 检测 ping

java - 嵌套运行时异常 : Cannot parse POST parameters of request

以下查询的 mysql 更新错误

java - 使用 POI 将表格导出到 Excel/Word

java - 如何在刷新时防止重复条目?

Java DOM 解析器无法解析一行 XML

Java 声音 - 先是响亮的噪音,然后是轻柔的噪音

servlets - HTTP session : how to configure URLs that not change the session expiration?

java - 从 java 类调用 servlet

java - Maven - Unresolved 对 [javax.activation, javax.annotation] 的引用