侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

JSP基于dom解析xml实例详解

Java  /  管理员 发布于 7年前   234

本文实例讲述了JSP基于dom解析xml的方法。分享给大家供大家参考,具体如下:

初次学习用dom操作xml文件,有很多不足之处,牛人多给点建议,练习时我没对中文做乱码处理,也没做验证哦!O(∩_∩)O~

实体类:User

public class User { private String name; private String pwd; private String email; 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 getEmail() { return email; } public void setEmail(String email) { this.email = email; }}

数据访问层接口:UserDao

public interface UserDao { boolean login(String name, String pwd); void insertUser(User user); List<User> selectUser(); void updateUser(User user); boolean deleteUser(String name); public User findByName(String name);}

接口实现类:UserDaoImpl

public class UserDaoImpl implements UserDao { private static final String PATH="xml文件路径"; private void build(Document dom) { try {  //定义转换器  Transformer f = TransformerFactory.newInstance().newTransformer();  //设置输出的编码格式  f.setOutputProperty(OutputKeys.ENCODING, "UTF-8");  //构建dom源  DOMSource source = new DOMSource(dom);  //指定文件存放的目标路劲  StreamResult sr = new StreamResult(new File(PATH));  //执行转换操作  f.transform(source, sr); } catch (Exception e) {  e.printStackTrace(); } } //登陆 public boolean login(String name, String pwd) { boolean flag = false; try {  //根据以有的xml文件创建Document对象  Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));  //获取user节点下的子节点  NodeList list = dom.getElementsByTagName("user");  //遍历list,数据匹配退出  for(int i = 0; i<list.getLength(); i++) {  Element el = (Element)list.item(i);  if(name.equals(el.getAttribute("name")) && pwd.equals(el.getAttribute("pwd"))) {   flag = true;   break;  }  } } catch (Exception e) {  // TODO Auto-generated catch block  e.printStackTrace(); }  return flag; } //添加操作 public void insertUser(User user) { try {  //创建全新的Document对象  Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();  //创建根节点users  Element el = dom.createElement("users");  //将根节点添加到dom中  dom.appendChild(el);  //创建子节点  Element e2 = dom.createElement("user");  //将子节点添加到根节点中  el.appendChild(e2);  //取得xml文件中现有的信息  List<User> users = this.selectUser();  for(int i = 0; i < users.size(); i++){  //创建节点user  Element el3 = dom.createElement("user");  User us =users.get(i);  //设置节点的属性(name,pwd,email)  el3.setAttribute("name", us.getName());  el3.setAttribute("pwd", us.getPwd());  el3.setAttribute("email", us.getEmail());  //添加到根节点中  el.appendChild(el3);  }  e2.setAttribute("name", user.getName());  e2.setAttribute("pwd", user.getPwd());  e2.setAttribute("email", user.getEmail());  build(dom); } catch (ParserConfigurationException e) {  // TODO Auto-generated catch block  e.printStackTrace(); } } //查询操作 public List<User> selectUser() { List<User> userList = new ArrayList<User>(); try {  //根据已有的xml文件创建dom  Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));  //获取所有user节点下的子节点  NodeList list = dom.getElementsByTagName("user");  for(int i = 0;i <list.getLength();i++){  User user =new User();  Element element = (Element)list.item(i);  user.setName(element.getAttribute("name"));  user.setPwd(element.getAttribute("pwd"));  user.setEmail(element.getAttribute("email"));  userList.add(user);  } } catch (Exception e) {  // TODO Auto-generated catch block  e.printStackTrace(); } return userList; } //修改操作 public void updateUser(User user) { try {  //根据以有的xml文件创建dom  Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));  //获取user节点下的子节点  NodeList list = dom.getElementsByTagName("user");  //遍历list  for(int i = 0;i < list.getLength();i++) {  Element el = (Element)list.item(i);  //根据name属性去修改  if(user.getName().equals(el.getAttribute("name"))) {   el.setAttribute("pwd", user.getPwd());   el.setAttribute("email", user.getEmail());   build(dom);  }  } } catch (SAXException e) {  // TODO Auto-generated catch block  e.printStackTrace(); } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace(); } catch (ParserConfigurationException e) {  // TODO Auto-generated catch block  e.printStackTrace(); } } //删除操作 public boolean deleteUser(String name) { try {  //根据以有xml文件创建domcumet对象  Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));  //获取user节点下的子节点  NodeList list = dom.getElementsByTagName("user");  //遍历list  for(int i=0;i<list.getLength();i++) {  Element el = (Element)list.item(i);  if(name.equals(el.getAttribute("name"))) {   el.getParentNode().removeChild(el);   build(dom);   return true;  }  } } catch (Exception e) {  // TODO: handle exception } return false; } //根据name查找 public User findByName(String name) { User user = new User(); try {  //根据以后的xml文件创建document对象  Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));  //获取user节点下的子节点集合  NodeList list = dom.getElementsByTagName("user");  for(int i=0;i<list.getLength();i++) {  Element el = (Element)list.item(i);  if(name.equals(el.getAttribute("name"))) {   user.setName(el.getAttribute("name"));   user.setPwd(el.getAttribute("pwd"));   user.setEmail(el.getAttribute("email"));   break;  }  } } catch (Exception e) {  e.printStackTrace(); } return user; }}

业务逻辑层接口:UserService

boolean login(String name, String pwd);void insertUser(User user);List<User> selectUser();void updateUser(User user);boolean deleteUser(String name);public User findByName(String name);

接口实现类:UserServiceImpl

public class UserServiceImpl implements UserService { UserDao dao = new UserDaoImpl(); public boolean login(String name, String pwd) { return dao.login(name, pwd); } public void insertUser(User user) { dao.insertUser(user); } public List<User> selectUser() { return dao.selectUser(); } public void updateUser(User user) { dao.updateUser(user); } public boolean deleteUser(String name) { return dao.deleteUser(name); } public User findByName(String name) { return dao.findByName(name); }}

控制层:UserAction

public class UserAction extends ActionSupport{  private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } UserService userService = new UserServiceImpl(); public String selectUser(){ HttpServletRequest request = ServletActionContext.getRequest(); List<User> users = new ArrayList<User>(); users = userService.selectUser(); request.setAttribute("USER", users); return "select"; } /** * 登陆 * @return */ public String login(){ if(user.getName() != null && user.getPwd() != null) {  boolean flag = userService.login(user.getName(), user.getPwd());  if(flag) {  return SUCCESS;  } } return ERROR; } /** * 修改 * @return */ public String update(){ userService.updateUser(user); return "update"; } /** * 编辑 * @return */ public String edit(){ HttpServletRequest request = ServletActionContext.getRequest(); String name = request.getParameter("uName"); if(name != null) {  User u = userService.findByName(name);  request.setAttribute("USER", u); } return "edit"; } /** * 删除 * @return */ public String delete(){ HttpServletRequest request = ServletActionContext.getRequest(); String name = request.getParameter("uName"); boolean flag = userService.deleteUser(name); System.out.println(flag); return SUCCESS; }  /**   * 添加   * @return   */ public String insert(){ userService.insertUser(user); return "insert"; }}

struts.xml配置(本人用的的struts2):

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC  "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"  "http://struts.apache.org/dtds/struts-2.1.7.dtd"><struts>  <package name="file" extends="struts-default">   <action name="list" class="com.jun.action.UserAction" method="selectUser">    <result name="select">/list.jsp</result>   </action>   <action name="login" class="com.jun.action.UserAction" method="login">    <result name="success" type="redirectAction">/list.action</result>    <result name="error">/login.jsp</result>   </action>   <action name="insert" class="com.jun.action.UserAction" method="insert">    <result name="insert" type="redirectAction">/list.action</result>   </action>   <action name="delete" class="com.jun.action.UserAction" method="delete">    <result type="redirect">/list.action</result>     </action>   <action name="update" class="com.jun.action.UserAction" method="update">    <result name="update" type="redirectAction">/list.action</result>     </action>   <action name="edit" class="com.jun.action.UserAction" method="edit">    <result name="edit">/update.jsp</result>     </action>  </package></struts>

web.xml配置

<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5"  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_2_5.xsd"> <welcome-file-list>  <welcome-file>index.jsp</welcome-file> </welcome-file-list> <filter>  <filter-name>struts2</filter-name>  <filter-class>  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  </filter-class> </filter> <filter-mapping>  <filter-name>struts2</filter-name>  <url-pattern>/*</url-pattern> </filter-mapping></web-app>

四个页面:login.jsp  list.jsp insert.jsp,update.jsp

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head>  <base href="https:/article/<%=basePath%>">  <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0">   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="https:/article/styles.css"> --> </head> <body>  <a href="https:/article/list.action">首页</a>|<a href="https:/article/insert.jsp">注册</a>  <form action="login.action" method="post">  <table>  <tr>    <td> 用户名:</td><td><input name="user.name" type="text"></td>  </tr>  <tr>    <td> 密码:</td><td><input type="password" name="user.pwd"></td>  </tr>  <tr>    <td colspan="2" align="center"><input type="submit" value="登录"></td>  </tr>    </table>   </form> </body></html>

list.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ taglib uri="/struts-tags" prefix="s"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head>  <base href="https:/article/<%=basePath%>">  <title>My JSP 'list.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0">   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="https:/article/styles.css"> --> </head> <body > <a href="https:/article/insert.jsp">注册</a>  <table border="1">  <tr>   <td align="center" colspan="6"><font size="+3">用户列表</font></td>  </tr>   <tr>    <td>序号</td><td>用户名</td><td>密码</td><td>邮箱</td><td>删除</td><td>编辑</td>   </tr>   <c:forEach items="${USER}" var="u" varStatus="temp">    <tr>    <td>${temp.index+1}</td><td>${u.name }</td><td>${u.pwd }</td><td>${u.email}</td><td><a href="https:/article/delete.action?uName=${u.name}">删除</a></td><td><a href="https:/article/edit.action?uName=${u.name }">编辑</a></td>    </tr>  </c:forEach>  </table> </body></html>

insert.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><% String path = request.getContextPath(); String basePath = request.getScheme() + "://"  + request.getServerName() + ":" + request.getServerPort()  + path + "/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="https:/article/<%=basePath%>"> <title>My JSP 'register.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="https:/article/styles.css"> --> </head> <body> <a href="https:/article/list.action">首页</a> <form action="insert.action" method="post">  <table>  <tr>   <td>   用户名:   </td>   <td>   <input name="user.name" type="text">   </td>  </tr>  <tr>   <td>   密码:   </td>   <td>   <input type="password" name="user.pwd">   </td>  </tr>  <tr>   <td>   邮箱:   </td>   <td>   <input type="text" name="user.email">   </td>  </tr>  <tr>   <td colspan="2" align="center">   <input type="submit" value="提交">   </td>  </tr>  </table> </form> </body></html>

update.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head>  <base href="https:/article/<%=basePath%>">  <title>My JSP 'update.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0">   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="https:/article/styles.css"> --> </head> <body>  <a href="https:/article/list.action">首页</a>  <h2>更新操作</h2>  <form action="update.action" method="post">  <table>  <c:set value="${USER}" var="user"></c:set>  <tr>    <td> 用户名:</td><td><input readonly="readonly" name="user.name" value="${user.name}" type="text"></td>  </tr>  <tr>    <td> 密码:</td><td><input type="password" value="${user.pwd }" name="user.pwd"></td>  </tr>  <tr>    <td> 邮箱:</td><td><input type="text" value="${user.email }" name="user.email"></td>  </tr>  <tr>    <td colspan="2" align="center"><input type="submit" value="保存"></td>  </tr>    </table>   </form> </body></html>

本人学习所用的user.xml文件

<?xml version="1.0" encoding="UTF-8"?><users><user [email protected] name="bbb" pwd="aaaaaa"/><user [email protected] name="ccc" pwd="aaaaaa"/></users>

希望本文所述对大家jsp程序设计有所帮助。


  • 上一条:
    jsp实现防盗链的方法
    下一条:
    jsp编程去除空白行的方法
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在java中实现的脱敏工具类代码示例分享(0个评论)
    • zookeeper安装流程步骤(0个评论)
    • 在java中你背的“八股文”可能已经过时了(2个评论)
    • 在php8.0+版本中使用属性来增加值代码示例(3个评论)
    • java 正则表达式基础,实例学习资料收集大全 原创(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2018-03
    • 2020-03
    • 2023-05
    • 2023-11
    • 2024-01
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客