首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spring将数据传递到JSP页面

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

Stack Overflow用户
提问于 2015-09-21 07:56:01
回答 1查看 158关注 0票数 0

我使用的是spring(而不是mvc)、servlet、jsp作为我的web应用程序,我想在jsp页面上显示用户列表,它是如何实现的?这是我的密码

代码语言:javascript
复制
LoginService.java
代码语言:javascript
复制
@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();
    }
}
代码语言:javascript
复制
LoginServlet.java
代码语言:javascript
复制
@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);
    }
}
代码语言:javascript
复制
Login.jsp
代码语言:javascript
复制
<%@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>
代码语言:javascript
复制
Home.jsp
代码语言:javascript
复制
<%@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>

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-09-21 08:29:46

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32690059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档