0

我正在尝试制作一个网络项目。我的问题可以使用 JSTL 在 JSP 页面上显示 java 属性吗?我对 JSP 很陌生。
就我现在而言,我创建了由 servlet 处理的登录页面。我想要实现的是用户使用他的凭据登录。并根据凭据在后台处理数据并显示在页面上。(登录用户点击我的信息页面后,数据会自动填充)。创建另一个 servlet 不是一个好的选择,所以我可能需要从普通类调用数据(不需要表单)。

登录.jsp

<form action="LoginServlet" method="post">
<table>
<tr><td>Login    : </td><td><input type="text" name="login"/></td></tr>
<tr><td>Password :</td><td><input type="password" name="password"/></td></tr>
<tr><td><input type="submit" value="Login"/></td><td></td></tr>
</table>
</form>

登录Servlet.java

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
                                             throws ServletException, IOException {
        String login = request.getParameter("login");
        String password = request.getParameter("password");
        request.setAttribute("login", login);
        request.setAttribute("password", password);
        LoginService.setPublicID(login);
        boolean result = LoginService.Auth(login, password);
        System.out.println(result);
        if(result==true){
            getServletContext().getRequestDispatcher("/main.jsp").forward(request, response);
        }
        else{
            response.sendRedirect("login.jsp");
        }

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
                                           throws ServletException, IOException {
            doGet(request, response);

 }

LoginService.java (auth.handler) [我使用静态 publicID 因为基于此,其他的东西已经完成]

public class LoginService {

    public static String publicID;

    public static String getPublicID() {
        return publicID;
    }
    public static void setPublicID(String login) {
        LoginService.publicID = login;
    }

    public static boolean Auth(String login, String password){

        System.out.println(password);
        if(password.equals("gw") && login.equals("servo")){
            return true;
        }
        else
        {
            return false;
        }
    }

}

这会将我重定向到 main.jsp。

<%@ 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" %>
<!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>Insert title here</title>
</head>
<body>
<h2>Login successful!</h2>
<a href="userinfo.jsp">UserInfo</a>
 Welcome <c:out value="${login}"/>

</body>
</html>

用户信息服务.java

public class UserInfoService {
    static String userName;
    static String lastName;
    static String mobile;
    static String email;


    public static String getUserName() {
        return userName;
    }
    public static void setUserName(String userName) {
        userName = LoginService.getPublicID();
        UserInfoService.userName = userName;
    }
    public static String getEmail() {
        return email;
    }
    public static void setEmail(String email) {
        UserInfoService.email = email;
    }

}

最后。用户信息.jsp

<%@ 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" %>
    <%@ page import="org.UserInfo.UserInfoService"%>

<!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>Insert title here</title>
</head>
<body>
<c:out value="${UserInfoService.getUserName}"/>
</body>
</html>

但这总是空的。你能告诉我我哪里错了吗?

4

2 回答 2

0

UserInfoService解析为null,您需要将其注册为 bean,请参见此处

于 2013-10-19T15:53:11.247 回答
-1

您不是UserInfoService.setUserName()从代码中的任何地方调用该方法。

于 2014-03-28T14:56:31.287 回答