Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用spring将数据传递到JSP页面_Java_Spring_Jsp_Servlets_Autowired - Fatal编程技术网

Java 使用spring将数据传递到JSP页面

Java 使用spring将数据传递到JSP页面,java,spring,jsp,servlets,autowired,Java,Spring,Jsp,Servlets,Autowired,我正在为我的web应用程序使用springnot mvc、servlet、jsp,我想在jsp页面上显示用户列表,如何实现?这是我的密码 LoginService.java 请告诉我正确的方法是什么?另外,请建议我的代码是否正确,或者在设计方面是否需要任何修改,或者这是正确的做法 以前我曾在home.jsp中创建LoginService对象,但这不是正确的方法,我需要在jsp中自动连接服务,或者更确切地说,我认为如果我将数据传递到视图层而不是在视图层中获取数据,这是好的做法?jsp页面中的Ja

我正在为我的web应用程序使用springnot mvc、servlet、jsp,我想在jsp页面上显示用户列表,如何实现?这是我的密码

LoginService.java
请告诉我正确的方法是什么?另外,请建议我的代码是否正确,或者在设计方面是否需要任何修改,或者这是正确的做法


以前我曾在home.jsp中创建LoginService对象,但这不是正确的方法,我需要在jsp中自动连接服务,或者更确切地说,我认为如果我将数据传递到视图层而不是在视图层中获取数据,这是好的做法?

jsp页面中的Java代码被认为是错误的做法。使用Spring,您应该创建一个使用控制器与其他组件交互的模型,并将要显示的信息添加到传递给jsp进行呈现的模型中。有关详细信息,请参阅。

我没有使用spring MVC,它只是用于DI的spring,然后是用于声明性事务管理的AOP和用于日志记录的AOP。对此,我有什么选择?我想你最终应该使用Spring MVC,你会后悔没有使用,但你可以使用普通servlet,如这里的答案所述:。这里的关键是转发请求而不是重定向,这使您能够在呈现jsp时访问在servlet中设置的请求属性。
@Service
public class LoginService {

    @PersistenceContext
    EntityManager em;

    public User getUserByUserName(String userName, String password) {
        User user = null;
        try {
            user = em.createQuery("from User u where u.userName = :userName and u.password = :password", User.class)
                    .setParameter("userName", userName)
                    .setParameter("password", password)
                    .getSingleResult();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return user;
    }

    public List<User> getListOfUsers() {
        return em.createQuery("from User u", User.class).getResultList();
    }
}
LoginServlet.java
@Component
public class LoginServlet extends HttpServlet {

    @Autowired
    LoginService loginService;

    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);
        SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        EntityManagerFactory emf = (EntityManagerFactory) request.getServletContext().getAttribute("emf");
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        User user = loginService.getUserByUserName(userName, password);
        if(user != null){
            request.getSession().setAttribute("user", user);
            response.sendRedirect("home.jsp");
        }
        else{
            response.sendRedirect("login.jsp");
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
}
Login.jsp
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>Login Page</title>
</head>
<body>
<form id="form" name="form" method="post" action="login">
    <h1>Login</h1>
    Please enter your login information
    <br/>New User? <a href="register.jsp">Register</a>
    Enter your user ID
    <input type="text" name="userName" id="userId"/>
    Password
    <input type="password" name="password" id="password"/>
    <button type="submit">Sign-in</button>
</form>
</body>
</html>
Home.jsp
<%@page import="demo.spring.entity.User" %>
<%@page import="java.util.Date" %>
<%@ page import="java.util.List" %>
<%@page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
<h1>User</h1>
<form id="form" name="form" method="post" action="update">
<p>
    <%=new Date()%></br>
    <%
        User user = (User) session.getAttribute("user");
    %>
    <b>Welcome <%= user.getFirstName() + " " + user.getLastName()%>
    </b>
    <br/>
    <a href="logout.jsp">Logout</a>
</p>

<table>
    <thead>
    <tr>
        <th>User ID</th>
        <th>First Name</th>
        <th>Middle Name</th>
        <th>Last Name</th>
        <th>email</th>
    </tr>
    </thead>
    <%--<tbody>
        <%
            LoginService loginService = new LoginService();
            List<User> list = loginService.getListOfUsers();
            for (User u : list) {
        %>
            <tr>
                <td><input type="text" name="firstName" id="firstName" value="<%=u.getUserName()%>"/></td>
                <td><%=u.getFirstName()%></td>
                <td><%=u.getMiddleName()%></td>
                <td><%=u.getLastName()%></td>
                <td><%=u.getEmail()%></td>
            </tr>
        <%}%>
    <tbody>--%>
</table>
<br/>
</form>

</body>
</html>