这是我第一次尝试使用tomcat使用java servlet创建web页面,但每当我尝试将参数传递给calculator.jsp文件时,我都会将其变为空,只显示calculator.jsp中的“name:”文本,而没有尝试从java类传输的${}变量(“string”文本)。我想不出是怎么回事。
如果有人能帮助我,因为我陷入困境,我找不到任何解决办法
下面是index.jsp的代码
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="com.example.*"%>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h1><%= "Hello World!" %>
</h1>
NAME: <%= ((String)request.getAttribute("abc")) %>
ll : ${requestScope.abc}
<br/>
<form action="calculator.jsp" method="post">
<button type="submit">Button</button>
</form>
</body>
</html>
计算器.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" import="com.example.AirlineReservation.HelloServlet" %>
<html>
<head>
<title>Title</title>
</head>
<body>
NAME: <%= ((String)request.getAttribute("abc")) %>
ll : ${requestScope.abc}
</body>
</html>
helloservlet.java
package com.example.AirlineReservation;
import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
@WebServlet(name="/calculator")
public class HelloServlet extends HttpServlet {
private String message;
public void init() {
message = "Testing!";
}
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String s="string";
request.setAttribute("abc",s);
request.getRequestDispatcher("/calculator.jsp").forward(request,response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
}
public void destroy() {
}
}
3条答案
按热度按时间idfiyjo81#
从放置它的作用域(在本例中为requestscope)中获取值
试试这个
${requestScope.}
isr3a4wc2#
您可以简单地使用:
还是用便签
2vuwiymt3#
您的代码中有几个小错误:
您的表格是使用
POST
(你指定的method="post"
),因此servlet应该覆盖doPost
方法而不是doGet
方法,,将servlet绑定到
/calculator.jsp
,也就是说getRequestDispatcher("/calculator.jsp").forward(request, response)
将递归地将请求分派到servlet本身,直到StackOverflowError
被抛出。将servlet绑定到另一个uri,例如:或者移动jsp文件(
/WEB-INF/calculator.jsp
对于不应直接从web访问的jsp页面来说是一个不错的选择)。这个
action="/calculator.jsp"
表单的属性被解释为绝对uri路径(相对于服务器的根url,例如。http://example.com
). 另一方面,servlet的地址是相对于上下文路径的(例如。http://example.com/app_name
). 因此,表单不会提交到servlet。在中使用相对路径action
参数:备注:您的el表达式
${}
这实际上是正确的。根据el表达式的解析规则,服务器将在页面、请求、会话和应用程序上下文中查找“”属性。因此,它将具有与schwencke相同的效果${requestScope.}
el expression还是anish sharma的<%= request.getAttribute("") %>
潦草的表情。