xml html登录页面,jsp基于XML实现用户登录与注册的实例解析(附源码)

本文介绍了基于XML实现的数据库登录与注册功能,利用DOM4J进行XML文件的读取和存储,使用静态工厂类管理Document对象。前端通过HTTP Servlet处理登录和注册请求,验证用户输入。此外,还涉及到验证码技术,确保用户输入的安全性。整个流程包括了文件操作、前端交互和数据验证等关键步骤。
摘要由CSDN通过智能技术生成

简单的基于xml做数据库的登录与注册

主题介绍:

1.xml的读取和存储,主要是用到dom4j技术,(网络中的文件存储路径采用classLoader)

文件的读取和存储,写了一个工厂类public class DocumentFactory {

private static Document dom=null;//需要共享一个dom,所以需要设置为static

private static String name="user.xml";

private static String filename;

//写一个静态块实现对dom树的读取

static{//dom4j技术

SAXReader read=new SAXReader();

filename=DocumentFactory.class.getClassLoader().getResource(name).getPath();//采用类加载器进行读取文件

try {

dom=read.read(filename);

} catch (DocumentException e) {   e.printStackTrace();}}

//主要获得和存储的两个函数(采用单例模式)(必须共享一个dom数)

public static Document getDocument(){ //获得xml中的dom树

return dom;

}

//注册之后需要保存

public static void Save() {

XMLWriter wr;

try {

wr = new XMLWriter(new FileOutputStream(filename));

}catch (Exception e1) {

throw new RuntimeException("存储文件时读文件失败");

}

try {

wr.write(dom);

} catch (IOException e) {

throw new RuntimeException("写文件失败"+e.getMessage());

}finally{

try {

if(wr!=null){

wr.close();

}

} catch (IOException e) {

throw new RuntimeException("关流失败"+e.getMessage());}}}

}

2.前台的技术:基本上就是界面的搭建和将数据传到后台进行处理。以及部分的必填选项要求。

两个页面的代码:

//登录

用户名:

密 码 :

   验证码:看不清//需要重写一个js进行刷新 

注册

//登录后台的处理public class Login extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

request.setCharacterEncoding("utf-8");//设置utf-8的编码格式去接收

response.setContentType("text/html;charset=UTF-8");//设置页面显示方式,这个设置必须要在获得输出流之前设置,不然设置都没有用,照样会出现乱码

PrintWriter out = response.getWriter();

out.println("HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("");

out.println(" 

A Servlet");

out.println("  ");

out.println(" 

");

String name=request.getParameter("name");

String pwd=request.getParameter("pwd");

String check=request.getParameter("checkCode");//从界面获得验证码输入的值

ImgDemo id =new ImgDemo();

String str=id.getStr();

if(!check.equals(str)){

out.println("登录失败,验证码不正确!!");//要是验证码不符合,直接返回登录界面

out.print("返回登录");

return;

}

//  System.out.println("11"+check);

//  System.out.println("22"+str);

//登录前获得所有的对象

Document dom=DocumentFactory.getDocument();

boolean flag=false;

Element root=dom.getRootElement();

Iterator it=root.elementIterator();

while(it.hasNext()){

Element ele =it.next();

String nameC=ele.attributeValue("name");

String pwdC=ele.attributeValue("pwd");

if(name.trim().equals(nameC)&&pwdC.equals(pwdC)){

flag=true;

break;

}

}

if(flag){

out.print("恭喜您,登陆成功!");

out.println("返回登录");

}else{

out.print("用户名和密码不匹配。登录失败。。。");

out.println("返回登录");

}

out.println(" ");

out.println("");

out.flush();

out.close();

}

}

//注册

用户 名:

密 码 : 

确认密码 :

//注册的后台处理public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");//必须要设置在获得Printwrite之前,都则设置无效

PrintWriter out = response.getWriter();

out.println("HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("");

out.println(" 

A Servlet");

out.println(" 

");

boolean flag=false;

request.setCharacterEncoding("utf-8");

String name=request.getParameter("name");

String pwd=request.getParameter("pwd");

Document dom =DocumentFactory.getDocument();

Element root=dom.getRootElement();

Iterator it=root.elementIterator();

while(it.hasNext()){

Element ele=it.next();

String nameR=ele.attributeValue("name");//这里传过来的值可能是null.所以我们必须在前台要预防一下,当然在这里也要考虑一下

String pwdR=ele.attributeValue("pwd");

if(name.equals(nameR)&&pwd.equals(pwdR)){

flag=true;

break;

}

}

if(flag){

out.print("此用户已注册!!");

out.print("返回注册");

}else{

Element ele=root.addElement("user");

ele.addAttribute("name", name);

ele.addAttribute("pwd", pwd);

DocumentFactory.Save();

out.print("注册成功!!");

out.print("返回登录");

}

out.println(" ");

out.println("");

}

3.验证码技术:同样的从后台获取图片,以及登录时候进行匹配

效果图:

1,首先是验证验证码的

641d63da8704dffe8ff23cc155b7e70e.png

1bf690a51cf99bb62437b44c1a727f04.png

25097754ccd809def73b336dfb319e54.png

2.密码匹配

5f631b6c6e10ec00f80c2aaa591fda26.png

3,用户注册

e9f954a4a7030d11364762ec77dab4f8.png

4b71c7dbf43f53797f94017a0945e727.png

4a11b06082fe5216afc07bea237c2b49.png

f6e0865448d5997f1464bf98b5e4f130.png

4.密码正确

4bd4086478135ac52832a49ac5abc00c.png

5,查看user.xml文件

719241f194734586b5c3e99fc374bb19.png

a5bfeab3a9a6459e8ad753d149d2618f.png

整个登录和注册的源代码下载地址:

4fdb65fb6d0db73c20583634648ee7a9.gifLOGIN.zip

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值