本文实例讲述了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);
ListUser> 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; ilist.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文件中现有的信息
ListUser> 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 ListUser> selectUser() {
ListUser> userList = new ArrayListUser>();
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;ilist.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;ilist.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);
ListUser> 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 ListUser> 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();
ListUser> users = new ArrayListUser>();
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程序设计有所帮助。
您可能感兴趣的文章:- JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
- JavaScript对HTML DOM使用EventListener进行操作
- JavaScript简单遍历DOM对象所有属性的实现方法
- 详解javascript跨浏览器事件处理程序
- JavaScript实现为指定对象添加多个事件处理程序的方法
- 轻松创建nodejs服务器(5):事件处理程序
- JS注册/移除事件处理程序(ExtJS应用程序设计实战)
- 浅谈Javascript事件处理程序的几种方式
- js使用函数绑定技术改变事件处理程序的作用域
- JavaScript事件处理程序(事件侦听器)
- JavaScript Event学习第三章 早期的事件处理程序
- JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题