设计一个web应用,该web应用提供两个JSP页面,一个可以让用户输入姓名、年龄等信息,另一个页面显示登陆结果。web应用提供一个servlet对象用于负责数据的操作(姓名、年龄的合法性),web应用提供的javabean负责刻画登录用户,提供简单的数据获取和修改数据的方法。
https://blog.csdn.net/qq_51983316/article/details/120750985
<form action="loginServlet" method="post">
姓名:<input type="text" name="name"><br>
年龄:<input type="text" name="age"><br>
<input type="submit" value="提交">
</form>
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户输入的姓名和年龄
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
// 验证姓名和年龄是否合法
boolean valid = true;
if (name == null || name.trim().equals("")) {
valid = false;
}
if (age <= 0 || age >= 100) {
valid = false;
}
// 如果数据合法,则创建JavaBean并存储到Session中
if (valid) {
UserBean user = new UserBean();
user.setName(name);
user.setAge(age);
HttpSession session = request.getSession();
session.setAttribute("user", user);
}
// 跳转到登录结果页面
response.sendRedirect("loginResult.jsp");
}
}
public class UserBean {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
<%
// 从Session中获取登录用户的信息
HttpSession session = request.getSession();
UserBean user = (UserBean) session.getAttribute("user");
%>
<div>
<h1>登录结果</h1>
<% if (user != null) { %>
<p>您好,<%= user.getName() %>,您的年龄是<%= user.getAge() %>岁。</p>
<% } else { %>
<p>登录失败,请重新输入您的姓名和年龄。</p>
<% } %>
</div>
下面是一个简单的实现示例:
创建 JavaBean 类 LoginUser,用于描述登录用户信息。
java
public class LoginUser {
private String name;
private int age;
public LoginUser() {}
public LoginUser(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
创建输入信息 JSP 页面 input.jsp。
html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>输入信息</title>
</head>
<body>
<form action="login" method="post">
姓名:<input type="text" name="name"><br>
年龄:<input type="number" name="age"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
创建显示结果 JSP 页面 result.jsp。
html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录结果</title>
</head>
<body>
<%-- 获取登录用户信息 --%>
<% LoginUser user = (LoginUser) request.getAttribute("user"); %>
<%-- 显示登录结果 --%>
<% if (user != null) { %>
<p>欢迎您,<%= user.getName() %>!</p>
<p>您的年龄是 <%= user.getAge() %> 岁。</p>
<% } else { %>
<p>登录失败!</p>
<% } %>
</body>
</html>
创建 Servlet 处理用户请求,验证数据合法性,并将结果传递给 result.jsp 页面显示。
java
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 获取用户输入的信息
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
// 验证用户名和年龄是否符合要求
if (name == null || name.trim().equals("") || age <= 0 || age >= 150) {
// 如果不符合要求,转发到登录失败页面
request.getRequestDispatcher("/result.jsp").forward(request, response);
} else {
// 如果符合要求,创建一个登录用户对象并保存到 request 中
LoginUser user = new LoginUser(name, age);
request.setAttribute("user", user);
// 转发到登录成功页面
request.getRequestDispatcher("/result.jsp").forward(request, response);
}
}
}
在 web.xml 文件中配置 Servlet 和 JSP 页面的映射。假设 input.jsp 和 result.jsp 页面位于 WebContent 目录下。
xml
<web-app>
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.example.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>input.jsp</welcome-file>
</welcome-file-list>
</web-app>
以上为一个简单的实现示例,您可以根据需要进行修改和扩展。