JSP基于dom解析xml实例详解_JSP编程

本文实例讲述了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="<%=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="styles.css">
 -->
 </head>
 <body>
  <a href="list.action">首页</a>|<a href="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="<%=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="styles.css">
 -->
 </head>
 <body >
 <a href="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="delete.action?uName=${u.name}">删除</a></td><td><a href="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="<%=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="styles.css">
 -->
 </head>
 <body>
 <a href="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="<%=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="styles.css">
 -->
 </head>
 <body>
  <a href="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=aaa@sina.com name="bbb" pwd="aaaaaa"/>
<user email=bbb@sina.com name="ccc" pwd="aaaaaa"/>
</users>

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jsp
, dom
解析xml
c 编程实例详解、数控编程实例详解、vb教程 编程实例详解、matlab编程实例详解、数控车床编程实例详解,以便于您获取更多的相关知识。

时间: 2024-09-22 12:57:08

JSP基于dom解析xml实例详解_JSP编程的相关文章

jsp自定义标签用法实例详解_JSP编程

本文实例讲述了jsp自定义标签用法.分享给大家供大家参考.具体如下: 在JSP中有一种机制,可以让你在JSP页面中插入与HTML类似的标记.本文介绍JSP定制标记的基本概念和构成,以及如何开发和应用JSP定制标记. 什么是标记 使用HTML语言我们可以这样去编辑我们的网页: <HTML> <HEAD> <TITLE> HELLO WORLD </TITLE> </HEAD> <BODY> HELLO WORLD </BODY&g

JSP使用Servlet作为控制器实现MVC模式实例详解_JSP编程

本文实例讲述了JSP使用Servlet作为控制器实现MVC模式的方法.分享给大家供大家参考.具体如下: 一.目标: ① 初步理解MVC模式: ② 掌握Servlet的编写: ③ 使用MVC模式完成登录功能. 二.主要内容: ① 分析JSP+JavaBean模式存在的问题,并介绍JSP+JavaBean+Servlet模式,以及和MVC模式的关系: ② 通过简单实例介绍Servlet的编写.配置和运行: ③ 采用Servlet完成登录功能的控制. 1. JSP+JavaBean这种模式存在的问题?

JSP+Servlet+JavaBean实现登录网页实例详解_JSP编程

本文实例讲述了JSP+Servlet+JavaBean实现登录网页的方法.分享给大家供大家参考.具体如下: 这里涉及到四个文件: 1. 登录页面:login.html 2. 登录成功欢迎页面:login_success.jsp 3. 登录失败页面:login_failure.jsp 4. Servlet处理文件:LoginServlet.java 其实还涉及到一个文件:web.xml,这个后面再说: 下面分别介绍这几个文件: 1. 登录页面:login.html <!-- 该Login页面是一个

JSP中图片的上传与显示方法实例详解_JSP编程

本文实例讲述了JSP中图片的上传与显示方法.分享给大家供大家参考.具体如下: 1.引言 数据库应用程序,特别是基于WEB的数据库应用程序,常会涉及到图片信息的存储和显示.通常我们使用的方法是将所要显示的图片存在特定的目录下,在数据库中保存相应的图片的名称,在JSP中建立相应的数据源,利用数据库访问技术处理图片信息.但是,如果我们想动态的显示图片,上述方法就不能满足需要了.我们必须把图片存入数据库,然后通过编程动态地显示我们需要的图片.实际操作中,可以利用JSP的编程模式来实现图片的数据库存储和显

JSP使用MVC模式完成删除和修改功能实例详解_JSP编程

本文实例讲述了JSP使用MVC模式完成删除和修改功能的方法.分享给大家供大家参考.具体如下: 目标: ① 进一步理解MVC模式: ② 掌握删除功能的基本实现过程: ③ 掌握修改功能的基本实现过程. 主要内容: ① 使用MVC完成删除功能: ② 使用MVC模式完成信息更新功能. 1.如何使用MVC模式完成删除功能 根据MVC模式的特点,分别考虑MVC的3个部分. ① 首先考虑V部分: 输入:通常删除功能是在查询的基础上完成的,所以在用户信息列表界面上可以添加删除的超链. 输出:提示用户删除是否成功

JSP学习之Java Web中的安全控制实例详解_JSP编程

本文实例讲述了JSP学习之Java Web中的安全控制.分享给大家供大家参考.具体如下: 一.目标: ① 掌握登录之后的一般处理过程: ② 能够为每个页面添加安全控制: ③ 能够共享验证代码: ④ 使用过滤器对权限进行验证: ⑤ 能够对文件的局部内容进行验证: ⑥ 掌握安全验证码的基本实现方式: ⑦ 通过异常处理增强安全性. 二.主要内容: ① 通过修改前面的登录功能,分别对管理员和普通用户的登录进行处理: ② 为管理员才能访问的页面添加控制: ③ 共享各个页面中的控制代码,使用专门的文件,然后

基于JSP编译器基本语法的使用详解_JSP编程

   JSP编译器指引与指令元件有五种型态.在JSP1.0之后,大部分的JSP是包含在以作为结束的单一标签里.新的JSP1.1规格已经发表了,它同时也与XML相容. 五种JSP的编译器指引如下所示: 1.编译器指引 2.预定义 3.运算式 4.程序代码 5.注解    下面我们分析一个简单的JSP页面.您可以在JSWDK的examples目录下创建另外一个目录存放此文件,文件名字可以任意,但扩展名必须为.jsp.从下面的代码清单中可以看到,JSP页面除了比普通HTML页面多一些Java代码外,两

java(jsp)整合discuz同步登录功能详解_JSP编程

最近做了一个资源库系统的项目,老师说可以搭建开源论坛替代自己开发社交模块,正好在开源中国上看到了一个利用discuz的UCenter功能实现同步登录的开源项目(https://code.google.com/p/discuz-ucenter-api-for-java/),不禁大喜,于是花了几个小时照着教程操作了一遍,居然很轻松的成功了,特写此文以做纪念.. Uenter是Comsenz旗下各个产品之间信息直接传递的一个桥梁,通过UCenter站长可以无缝整合Comsenz系列产品,实现用户的一站

JSP编译指令page、include详解_JSP编程

1. JSP指令 分类:1).page  2).include  3).taglib 语法:  <%@ 指令名称  属性1="值1" .....%> 2. Page编译指令: • 作用:利用Page编译指令可以设置JSP的页面属性.通常位于JSP页面的顶端,对同一个页面可以有多个page指令.• page指令语法格式: 复制代码 代码如下: <%@page [language="Java"]    //声明JSP页面使用语言的种类 [extends