java用户管理注册功能 含前后台代码
作者:xanlv 发布时间:2022-08-01 12:05:11
本文实例为大家分享了java用户注册功能,供大家参考,具体内容如下
主页面:
浏览器显示:
代码实现:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>用户信息管理</title>
</head>
<body>
用户注册:<br/>
<!-- 相对路径 -->
<form action="reg" method="post">
姓名:<input type="text" name="name"/><br/>
密码:<input type="password" name="pwd"/><br/>
<input type="submit" value="注册"/>
</form>
<!-- 绝对路径 -->
<a href="/usersWeb/reg">查看所有用户</a><!-- GET方式:超链接和在url后面添加参数 -->
</body>
</html>
注册功能:
浏览器显示:
1)注册成功:
2)注册失败:
代码实现:
package cn.hncu.user.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hncu.user.dao.UserDao;
import cn.hncu.user.dao.UserDaoImpl;
import cn.hncu.user.domain.User;
public class RegServlet extends HttpServlet {
//注入
UserDao dao=new UserDaoImpl();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<User> users=dao.queryAllUsers();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>注册结果页面</TITLE></HEAD>");
out.println(" <BODY>");
out.println("<table cellspacing=0 border=1px><tr><th>操作</th><th>姓名</th></tr>");
for(User u:users){
out.println("<tr><td><a href='/usersWeb/del?id="+u.getId()+"'>删除</a></th>");
out.println("<th>"+u.getName()+"</th></tr>");
}
out.println("</table>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
User user=new User();
user.setName(name);
user.setPwd(pwd);
boolean boo=dao.reg(user);
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>注册结果页面</TITLE></HEAD>");
out.println(" <BODY>");
if(boo){
out.println("恭喜您("+name+")注册成功了...");
}else{
out.println("您("+name+")注册失败了...<br/>用户名已存在,请换一个注册");
}
out.println("<a href='javascript:history.go(-1)'>返回</a>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
查看所有用户功能:
浏览器显示:
代码实现: RegServlet类的doGet方法实现
删除操作功能:删除成功会重定向到主页面
代码实现:
package cn.hncu.user.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.hncu.user.dao.UserDao;
import cn.hncu.user.dao.UserDaoImpl;
public class DelServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id=request.getParameter("id");
// System.out.println("del-id:"+id);
UserDao dao=new UserDaoImpl();
dao.delUser(id);
//转到主页--重定向
response.sendRedirect("/usersWeb/index.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
}
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<servlet>
<servlet-name>RegServlet</servlet-name>
<servlet-class>cn.hncu.user.servlet.RegServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>DelServlet</servlet-name>
<servlet-class>cn.hncu.user.servlet.DelServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>RegServlet</servlet-name>
<url-pattern>/reg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DelServlet</servlet-name>
<url-pattern>/del</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
domain包的User对象
package cn.hncu.user.domain;
public class User {
private String id;
private String name;
private String pwd;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", pwd=" + pwd + "]";
}
}
逻辑层dao:
接口
实现类
package cn.hncu.user.dao;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import cn.hncu.user.domain.User;
import cn.hncu.user.utils.DomFactory;
import cn.hncu.user.utils.IDGenerate;
public class UserDaoImpl implements UserDao{
Document dom=DomFactory.getDom();
@Override
public boolean reg(User user) {
// //title[@lang='eng']选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性。
// dom.selectSingleNode("//user[fn:lower-case(@name)='"+user.getName().toLowerCase()+"']");
Node node=dom.selectSingleNode("//user[name='"+user.getName()+"']");//user节点下值为user.getName()的name元素
//"name[='"+user.getName().toLowerCase()+"']"
if(node!=null){
return false;
}
Element root=dom.getRootElement();
Element eUser=root.addElement("user");
String id=IDGenerate.getID();
eUser.addAttribute("id", id);
eUser.addElement("name").setText(user.getName());
eUser.addElement("pwd").setText(user.getPwd());
DomFactory.save();
return true;
}
@Override
public List<User> queryAllUsers() {
List<User> users=new ArrayList<User>();
List<Element> en=dom.selectNodes("//user");
for(Element e:en){
String id=e.attributeValue("id");
String name=e.elementText("name");
User user=new User();
user.setId(id);
user.setName(name);
users.add(user);
}
return users;
}
@Override
public void delUser(String id) {
// System.out.println(id);
String xpath="//user[@id='"+id+"']";
Node node=dom.selectSingleNode(xpath);
if(node!=null){
// System.out.println("del...");
node.getParent().remove(node);
DomFactory.save();
}
}
}
工具包utils:
获取用户id
package cn.hncu.user.utils;
import java.util.UUID;
public class IDGenerate {
private IDGenerate(){
}
public static String getID(){
// return UUID.randomUUID().toString();
return UUID.randomUUID().toString().replace("-", "");
}
}
对数据库users.xml的dom获取和保存方法
这里用dom4j的包,,,所以要把dom4j两个包导入的相应的位置:
package cn.hncu.user.utils;
import java.io.FileOutputStream;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class DomFactory {
private static Document dom;
private static String fileName;
static{
try {
SAXReader r=new SAXReader();
fileName=DomFactory.class.getClassLoader().getResource("users.xml").getPath();
System.out.println("users.xml的路径:"+fileName);///D:/apache-tomcat-7.0.30/webapps/usersWeb/WEB-INF/classes/users.xml
//注意:获取tomcat中当前项目classpath下的资源方式
dom=r.read(fileName);
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static Document getDom(){
return dom;
}
public static void save(){
XMLWriter w;
try {
w = new XMLWriter(new FileOutputStream(fileName));
w.write(dom);
w.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
数据库:
<?xml version="1.0" encoding="UTF-8"?>
<users>
</users>


猜你喜欢
- 我们先要记住三者的特征:String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线
- 一.static关键字的用途在《Java编程思想》P86页有这样一段话:“static方法就是没有this的方法。在st
- 本文是引用开源图表库框架 MPAndroidChart的LineChart地址:https://github.com/PhilJay/MPA
- 使用AES算法可用于对数据进行加密码与解密,使用的时候需要注意两点:1)被加密的串越长,加密后的字符串越长,注意数据库字段的设计;2)Lin
- 1.垃圾收集算法的核心思想Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内
- ScriptControl接口属性名称类型备注AllowUIBOOL检测是否允许运行用户的接口元素。如果为False,则诸如消息框之类的界面
- 前言前面说到在我们应对高并发的场景,请求量过于大的情况下给我们服务器的压力很多,造成缓存穿透、击穿、雪崩,那么我们采用布隆过滤器,有兴趣的小
- 目录关于日志级别为什么选用log4j2排除 spring-boot 自带的 logback 依赖添加 log4j2 依赖配置文件节点解析根节
- mysql有个字段是bit,只存储1和0,是二进制存储,那么在java的dao层如何映射成boolean呢@Column(name=&quo
- 前言接着上一篇:Java Fluent Mybatis 项目工程化与常规操作详解流程篇 上仓库地址:GitHub仓库查询定义查询请求体pac
- 一维数组1.一维数组的定义方式:int[] array1 = new int[3];//声明创建一个包含3个元素的数组array1(初始值为
- 本文实例汇总了C#中@的用法,对C#程序设计来说有不错的借鉴价值。具体如下:一 字符串中的用法1.学过C#的人都知道C# 中字符串常量可以以
- Spring bean配置单例或多例模式单例spring bean 默认是单例默认,在对应.xml文件中的配置是:<bean id=&
- 不说废话了,进入我们今天的主题吧。先贴上前面内容的地址:Android手势ImageView三部曲(一)Android手势ImageView
- 本文实例讲述了C#微信公众号与订阅号接口开发示例代码。分享给大家供大家参考,具体如下:using System;using System.W
- 问题:1.线程 wait()方法使用有什么前提?2. 多线程之间如何进行通信?3. Java 中 notify 和 notifyAll 有什
- 1. 什么是Volley我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和
- 面对一个项目,对于Android应用开发框架的选择,我想过三种方案:1.使用Loader + HttpClient + GreenDao +
- 导入项目集成环境:IntelliJ IDEA 2020.1.2演示系统:DELL Windows 10Eclipse项目如何导入IDEA并成
- 之前学完了Java SE的知识,掌握了面向对象的编程思想,但对集合、多线程、反射、流的使用等内容理解的还不是很深入,打算再学习数据结构与算法