我试图将一个小型网上商店作为学校项目的一部分。我们必须在java中使用servlet,因此也必须使用.jsp页面。我的问题是我想检查用户是否已登录。如果没有,我想显示登录表单,如果他们已登录,我想显示他们的购物篮。这里的主要问题是,当我尝试通过我的servlet将.jsp代码发送到我的主.jsp页面时,它不会翻译代码,它只是简单的打印出来:
这是我的servlet代码:
package coreservlets;
import java.io.*;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet({"/loggedIn"})
public class LoggedIn extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
PrintWriter pw = response.getWriter();
if (session.getAttribute("loggedInName") == null)
{
pw.println("<tr><td>" +
"<%@include file=\"messages.jsp\"%> </td>" +
"<td>"
+ "<form action=\"login\" method=\"POST\">"
+ "<table>"
+ "<tr>"
+ "<td>Username</td>"
+ "<td><input type=\"text\" name=\"username\" />"
+ "</td>"
+ "</tr>"
+ "<tr>"
+ "<td>Password</td>"
+ "<td><input type=\"password\" name=\"password\" />"
+ "</td>"
+ "</tr>"
+ "<tr>"
+ "<td></td>"
+ "<td><input type=\"submit\" value=\"login\" /> or"
+ " <ahref=\"register.jsp\">register here!</a>"
+ "</td>"
+ "</tr>"
+ "</table>"
+ "</form> </td>" +
"</tr>");
}
else
{
pw.println("<%@include file=\"shoppingBasket.jsp\"%>");
}
}
}
在index.jsp中,我使用:
简单地加载上面的servlet有没有一种聪明的方法来解决这个问题,如果没有它变得复杂,并且没有添加单独的登录页面(知道其他人已经完成了这一点,但我认为只是带来了很多额外的麻烦来检查人们是否在登录之前登录出去和东西
请记住这只是一个学校项目,所以我知道它可能不是最聪明的做事方式,或者最安全,但它只是一个想象中的网店:)
答案 0 :(得分:0)
这是错误的方法。
JSP将被编译为在运行时生成HTML的普通Java-Servlet。 您不能使用Java生成生成生成HTML的Java的JSP。
尝试使用
package coreservlets;
import java.io.*;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet({"/loggedIn"})
public class LoggedIn extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
PrintWriter pw = response.getWriter();
if (session.getAttribute("loggedInName") == null)
{
pw.println("<tr><td>");
request.getRequestDispatcher().include("/messages.jsp");
pw.println("<td>"
+ "<form action=\"login\" method=\"POST\">"
+ "<table>"
+ "<tr>"
+ "<td>Username</td>"
+ "<td><input type=\"text\" name=\"username\" />"
+ "</td>"
+ "</tr>"
+ "<tr>"
+ "<td>Password</td>"
+ "<td><input type=\"password\" name=\"password\" />"
+ "</td>"
+ "</tr>"
+ "<tr>"
+ "<td></td>"
+ "<td><input type=\"submit\" value=\"login\" /> or"
+ " <ahref=\"register.jsp\">register here!</a>"
+ "</td>"
+ "</tr>"
+ "</table>"
+ "</form> </td>" +
"</tr>");
}
else
{
pw.println("<%@include file=\"shoppingBasket.jsp\"%>");
}
}
}
而不是
行"<%@include file=\"messages.jsp\"%> </td>" +
此致