Java 使用spring将数据传递到JSP页面
我正在为我的web应用程序使用springnot mvc、servlet、jsp,我想在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
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>