我刚开始使用 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/