Eclipse创建带JavaBean的JSP程序

JAVA项目开发入门 专栏收录该内容
29 篇文章 1 订阅

  上一篇文章《Eclipse创建JSP程序》中介绍了在JSP文件中嵌入Java代码实现简单的用户登录验证及留言簿功能。程序的逻辑全部放在JSP文件中,不方面阅读、不利于修改,也无法进行代码复用,因此引入了JavaBean。
  JavaBean在JSP中的应用十分广泛,计划在JSP页面中,所有的实体对象及业务逻辑的相关处理都可以封装为JavaBean。在JSP页面中使用JavaBean不仅可以减少JSP页面中的Java代码,还可以增强程序的可读性使程序易于维护。
  本文演示JavaBean的简单用法,没有涉及多少JavaBean的标签使用方法。

程序功能

  本程序对上篇文章中的留言簿功能进行改造,增加用户注册功能,并将用户验证等功能封装为JavaBean。具体的功能逻辑如下图所示:
在这里插入图片描述

程序实现

  新建User类,表示用户,包含姓名,密码和邮箱三个属性。
在这里插入图片描述

package com.test.bean;

public class User
{
	private String name;
	private String password;
	private String email;
}

  在JavaBean对象中,为防止外部直接调用JavaBean属性,通常将JavaBean中的属性设置为私有的,然后为其提供功能的访问方法,也即getXXX()方法和setXXX()方法。鼠标选中三个属性定义,选择右键菜单中的Source->Generate Getters and Setters,可以自动生成指定属性的get和set方法,不用手动输入。
在这里插入图片描述
在这里插入图片描述

package com.test.bean;

public class User
{
	private String name;
	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public String getPassword()
	{
		return password;
	}
	public void setPassword(String password)
	{
		this.password = password;
	}
	public String getEmail()
	{
		return email;
	}
	public void setEmail(String email)
	{
		this.email = email;
	}
	private String password;
	private String email;
}

  创建一个UserBuffer类,用于缓存注册的用户信息,同时验证用户注册信息。在Application对象中保存一个UserBuffer的实例。在这里插入图片描述

public class UserBuffer
{
	private Map<String,User> userBuffer=new HashMap<String,User>();
	
	public UserBuffer()
	{
		User user=new User();
		user.setName("gc_2299");
		user.setPassword("123456");
		user.setEmail("1234567@qq.com");
		
		userBuffer.put(user.getName(), user);
	}
	
	public Boolean ValidateUser(User user)
	{
		if(!IsUserRegisiterd(user.getName()))
		{
			return false;
		}
		
		User u=userBuffer.get(user.getName());
		
		return u.getPassword().equals(user.getPassword());
	}
	
	public Boolean IsUserRegisiterd(String userName)
	{
		return userBuffer.containsKey(userName);
	}
	
	public void AddUser(User user)
	{
		userBuffer.put(user.getName(), user);
	}
}

  增加register页面用于用户注册,将注册页面中的输入框名称与User属性名称对应,便于使用JavaBean动作标签。同时增加显示注册结果的页面。
在这里插入图片描述

<body>
<div align="center">新用户注册<br>
<hr width="30%" size="1" style="background-color:rgb(64,0,0);">
<br>
<form action="registerresult.jsp" method="post" name="login">
	<p>用户名:<input type="text" size="15" name="name"/></p>
	<p>密码:<input type="password" size="15" name="password"/></p>
	<p>电子邮箱:<input type="text" size="15" name="email"/><br></p>
	<p><input type="submit" value="注册" name="submit"/></p>
</form>
</div>
</body>

  新建registerresult.jsp文件,用于显示注册信息,并判断用户名是否已注册。

<jsp:useBean id="user" class="com.test.bean.User"></jsp:useBean>
<jsp:setProperty property="*" name="user"/>
用户信息如下:<br>
用户名:<jsp:getProperty property="name" name="user"/><br>
密码:<jsp:getProperty property="password" name="user"/><br>
邮箱:<jsp:getProperty property="email" name="user"/><br>

<%
	UserBuffer userBuffer=(UserBuffer)application.getAttribute("users");
	if(userBuffer==null)
	{
		userBuffer=new UserBuffer();
		application.setAttribute("users", userBuffer);
	}
	
	if(userBuffer.IsUserRegisiterd(user.getName()))
	{
		out.println("当前用户名已存在,请重新填写注册信息");
	}
	else
	{
		out.println("当前用户注册成功,请重新登录系统");
		userBuffer.AddUser(user);
		application.setAttribute("users", userBuffer);
	}
%>
<p><a href="register.jsp">返回注册窗口</a></p>
<p><a href="login.jsp">登录系统</a></p>

  注册完成后,点击登录系统进入登录界面,输入注册的用户名和密码,然后提交到deal.jsp中进行处理,整理deal中的代码,将判断逻辑放入JavaBean中。

<jsp:useBean id="user" class="com.test.bean.User"></jsp:useBean>
<jsp:setProperty property="name" name="user"/>
<jsp:setProperty property="password" name="user"/>
<%
	UserBuffer userBuffer=(UserBuffer)application.getAttribute("users");
	if(userBuffer==null)
	{
		userBuffer=new UserBuffer();
		application.setAttribute("users", userBuffer);
	}
		
	if(userBuffer.ValidateUser(user))
	{
		request.getRequestDispatcher("messageboard.jsp").forward(request,response);
	}
	else
	{
		response.sendRedirect("error.jsp");
	}
%>

  其它功能没有做改动,就是在登录界面增加了“注册新用户”链接。后续会加入Servlet,将项目中用于做判断用的JSP页面转为Servlet。
在这里插入图片描述
程序代码地址:https://github.com/guochao2299/SimpleMessageBoard/tree/20200415

参考文献:
[1]Java Web 设计使用教程
[2]Java Web从入门到精通

  • 2
    点赞
  • 2
    评论
  • 16
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

gc_2299

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值