Java 将值从jsp发送到servlet,然后返回到jsp
我知道早些时候也有人问过类似的问题,但出于某种原因,它不起作用。我只是想检查用户是否在登录页面上输入了这两个字段。如果没有,那么我想在jsp上显示消息,说明他们需要输入这两个凭据。这是我的JSP:Java 将值从jsp发送到servlet,然后返回到jsp,java,jsp,maven,servlets,Java,Jsp,Maven,Servlets,我知道早些时候也有人问过类似的问题,但出于某种原因,它不起作用。我只是想检查用户是否在登录页面上输入了这两个字段。如果没有,那么我想在jsp上显示消息,说明他们需要输入这两个凭据。这是我的JSP: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="c" uri="http://java.sun.co
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login</title>
</head>
<body>
<h2>Some App</h2>
<form action="login" method="post">
<table>
<tr>
<td>Username</td>
<td><input type="text" name="uname"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" id="pass" name="pass"></td>
</tr>
</table>
<br> <input type="button" value="Submit">
</form>
<c:out value= "${error}"/>
</body>
</html>
由于我正在尝试使用maven,下面是我的pom.xml文件,其中为jstl jar添加了依赖项:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
为什么c:out标签不打印任何东西?我做错了什么?任何帮助都将不胜感激。谢谢。您混合了两种向客户返回响应的方式。尝试使用以下代码传递错误消息:
if((username == null)|| password == null) {
String message = "Please enter both the credentials";
request.setAttribute("error", message);
getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
}
经验法则是,必须将request.setAttribute与forward一起使用,将request.getSession.setAttribute与response.sendRedirect一起使用。尝试${sessionScope['error']}而不是${error}。如果成功了,那么您可能在另一个作用域中有另一个同名“error”的属性。您还应该检查用户名或密码是否为空。i、 e.用户名!=null&&username.trim.isEmpty来自每个人的建议都非常有价值。有几件事我做错了:错误的servlet映射@WebServlet修复了它,将代码更改为@NaMaN和@bphilipnyc所回复的内容,而我无法访问servlet的最大错误是我在jsp中的输入类型是按钮。我把它改为输入类型submit,然后它就工作了。谢谢你们的回复。非常感谢。您认为您的输出是什么?调试的一种方法是在方法中放入一些System.out.println值,以确保达到所需的区域。另外,请注意,您将索引中的I大写。jsp@bphilipnyc我联系不到你。请在下面查看我对NaMaN用户的回复。我现在也在为servlet更新代码。谢谢。如果需要,您可以执行按钮类型=提交:
if((username == null)|| password == null) {
String message = "Please enter both the credentials";
request.setAttribute("error", message);
getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
}