web登录注册案例(上)

web实现注册登录功能

今天在写web实现注册登录功能的时候遇到一点问题,写下来作为记录。本人小白一枚,文中难免会有纰漏,请批评指正。

首先简单介绍一下项目,项目中暂时不涉及数据库,使用List集合来实现数据存储。项目使用的是MVC模型。主要动能是实现用户的注册登录,jsp页面负责View层的显示,Servlet负责处理请求,JavaBean负责封装数据。
下面贴出项目结构
项目文件结构
下面写出出现的问题和注意事项
1.在写好了regist.jsp和RegistServlet.java之后。测试过程中发现regist.jsp中的form表单提交给RegistServlet.java时。服务器报错404。
首先检查web.xml文件,并没有发现什么问题。之后再build中发现没有任何文件。
在这里插入图片描述
那么如何配置呢。右键工程名->BuildPath->ConfigBuildPath,打开如图界面
在这里插入图片描述
双击Included.得到如图
在这里插入图片描述
点击Add Multiple,这里我们就看到我们的JavaBean和Servlet类。全选确认
在这里插入图片描述
回到这个界面之后一定要勾选Allow output folders for …
在这里插入图片描述
然后我们再查看文件夹,就能看到我们设置好的效果
在这里插入图片描述
至此,服务器报错404顺利解决。

2.文件上传问题
在form表单中有一个上传文件的控件

<tr>
    <td class="td1">上传头像</td>
    <td><input type="file" id="photo" name="upload"></td>
</tr>

如何进行实现呢。首先了解文件上传的条件

<!-- 
	1.表单必须是post方式提交
	2.表单中必须含有文件上传项,文件上传项必须要有name的属性和值
	3.表单的enctype属性必须设置为multipart/form-data
-->

view层写好之后,那么我们的C层怎么实现呢,这里需要引入两个jar包
在这里插入图片描述
然后我们使用这两个包里面的方法就可以拿到form表单提交的数据,具体实现直接上代码(这里的实现还不全,后续会补充)

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//数据接收
		//文件上传基本操作
		try {
			//1.创建一个磁盘文件项工厂对象
			DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
			//2.创建一个核心解析类
			ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
			//3.解析request请求,返回List集合,List集合中存放的是FileItem对象
			List<FileItem> list = servletFileUpload.parseRequest(request);
			//定义一个List集合,用于保存兴趣爱好数据
			List<String> hobbyList = new ArrayList<String>();
			//4.遍历集合,获得每个FileItem.判断是表单项还是文件上传项
			for (FileItem fileItem : list) {
				//判断是表单项还是文件上传项
				if(fileItem.isFormField()) {
					//普通的表单项
					//接收表单项参数的值
					String name = fileItem.getFieldName();//获得表单项的name属性的值
					String value = fileItem.getString("UTF-8");
					System.out.println(name+"----"+value);
					//接收复选框的数据
					if("hobby".equals(name)) {
						String hobbyValue = fileItem.getString("UTF-8");
						//接收到一个值,将其存入到list集合中
						hobbyList.add(hobbyValue);
						hobbyValue = hobbyList.toString().substring(1, hobbyList.toString().length()-1);
						System.out.println(name+"   "+hobbyValue);
					}
				}else {
					//文件上传项
					//文件上传功能
				}
			}
		} catch (FileUploadException e) {
			e.printStackTrace();
		}
	}

拿到form表单的值就需要我们使用JavaBean来封装数据,JavaBean我之前写好了。这里贴上一部分代码。隐去的部分是成员变量的get()和set()方法。

public class User {
	private String username;
	private String password;
	private String nickname;
	private String sex;
	private String hobby;
	private String path;
	}

这样每一个User对象就是一个用户,对应到数据库就是用户表中的一条记录。这里我们使用一个List集合来保存我们的用户。
生成List集合的方法放在了我们InitServlet这个Servlet文件中。

public void init() throws ServletException {
		//创建一个List集合用于保存用户注册的信息
		List<User> list = new ArrayList<User>();
		//将list保存到ServletContext作用域中
		this.getServletContext().setAttribute("list", list);
	}

我们知道init()方法是Servlet在初始化时调用的,此时我们修改web.xml配置,使该方法更早调用
在这里插入图片描述
这样我们就得到了一个存放用户信息的List集合。
当我们在RegistServlet.java中得到form表单传递的数据时,新建一个User对象(这里需要对得到的数据进行处理),然后再将该对象加入到List集合中,就完成了用户的注册。

先写到这里,后续会完善这篇文章。文章中难免有纰漏,欢迎大家指正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值