java中document解析jsp,JSP基于dom解析xml实例详解

本文实例讲述了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 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

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 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 selectUser() {

List userList = new ArrayList();

try {

//根据已有的xml文件创建dom

Document dom = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(PATH));

//获取所有user节点下的子节点

NodeList list = dom.getElementsByTagName("user");

for(int i = 0;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

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

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 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 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 users = new ArrayList();

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):

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"

"http://struts.apache.org/dtds/struts-2.1.7.dtd">

/list.jsp

/list.action

/login.jsp

/list.action

/list.action

/list.action

/update.jsp

web.xml配置

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">

index.jsp

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

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

login.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'login.jsp' starting page

首页|注册

用户名:
密码:

list.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'list.jsp' starting page

注册

用户列表
序号用户名密码邮箱删除编辑
${temp.index+1}${u.name }${u.pwd }${u.email}删除编辑

insert.jsp

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

My JSP 'register.jsp' starting page

首页

用户名:

密码:

邮箱:

update.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

My JSP 'update.jsp' starting page

首页

更新操作

用户名:
密码:
邮箱:

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php导出excel不完整,急:php导出excel时,因数据比较多,经常导出不完整就结束了【php系统数据导出excel表格】...

急&#xff1a;php导出excel时&#xff0c;因数据比较多&#xff0c;经常导出不完整就结束了设置超在服务器上设置也可以&#xff0c;在当前文件写代码也可以服务器上找到php安装下的php.ini找到max_execution_time这句&#xff0c;将值改为你想要的时间&#xff0c;或者该为0表…

php禁用eval,zp blog

最新版的suhosin需要php版本大于5.4&#xff0c;对于5.4以下版本则需要安装补丁&#xff0c;尴尬之处在于安装补丁需要重新编译PHP并安装…… 总感觉莫名的不好干货&#xff1a;1、suhosin-0.9.36版本可以支持PHP5.3 且不用安装补丁2、安装步骤wget https://download.suhosin.…

php 堵塞 消息队列,PHP的并发处理

PHP如何处理并发什么是进程、线程、协程进程 Process计算机中的程序关于某数据集合上的一次运行活动&#xff0c;“一个执行中的程序”系统进行资源分配和调度的基本单位三态模型&#xff1a;多道程序系统中&#xff0c;进程在处理器上交替运行&#xff0c;状态不断地发生变化运…

php中节点值怎么获取,php – 节点更新:获取旧值

我正在使用nodeapi更新更新节点,但是我需要在幕后进行更多操作,这需要我知道字段的旧值/是否有一种方法可以在覆盖之前获取字段的旧值. 最佳答案 编辑hook_nodeapi()只对新的$node对象起作用,所以我之前的回答对你没用.相反,您需要在提交时访问节点.为此,您需要注册自己的提交处…

php 购物车封装代码,PHP中封装Redis购物车功能

// 服务层namespace Common\Service;use Vendor\Func\Red;class CartService extends CommonService {protected $redis;protected $pre_key;public function __construct(){parent::__construct();$this->redis Red::create();$this->pre_key C(USER.CART).C(APPID).:…

matlab pca和逆pca函数,matlab_PCA,训练集与测试集分开,原理和用法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼PCA基本流程&#xff1a;1、训练集矩阵算协方差矩阵A;2、算协方差矩阵特征值与特征向量;3、按特征值的大小排列特征矩阵&#xff0c;得B&#xff0c;对应的特征值(按从大到小排列)组成向量a;4、A*B得到去关联的新矩阵C&#xff0c;…

w3cschool php 调整图片尺寸,PHP_php修改上传图片尺寸的方法,本文实例讲述了php修改上传图 - phpStudy...

php修改上传图片尺寸的方法本文实例讲述了php修改上传图片尺寸的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;// This is the temporary file created by PHP$uploadedfile $_FILES[uploadfile][tmp_name];// Create an Image from it so we can do the resize$…

matlab频域低通滤波程序,低通频域滤波器在Matlab中的设计与实现.pdf

低通频域滤波器在Matlab中的设计与实现’ … … … … … ’ ’实用第一&#xff0e;&#xff0e;智‘‘慧密集&#xff0e; &#xff0e; &#xff0e; &#xff0e; &#xff0e; &#xff0e; &#xff0e; &#xff0e; … … &#xff0e; &#xff0e; &#xff0e; … &…

matlab做比例积分微分控制,PID控制器的微积分分析matlab代码

PID 控制器由比例环节(Proportional)、积分环节(Integral )和微分环节(Differential )组成&#xff0c;连续PID 控制器的一般形式&#xff1a;dt de K d e K t e K t u D tI p )()()()()(0τττ? 一、比例控制及性能分析比例控制器的传递函数为&#xff1a;p p K s G )( 例题…

php引用对象方法吗,在PHP中引用容器对象的方法?

您必须修改代码才能提供关系.在OOP中,我们称之为aggregation.假设PHP 4,以及“一系列条形图”的想法class foo {var $bars array();function __construct() {"Foo Exists!";}function magic_bullet($id) {switch($id) {case 1:echo "There is no spoon! "…

数据合并计算php,各位大神,求助如果用VBA实现以下数据合并以及数量计算

Option ExplicitModuleName"模块1"Dim aData, dic As Object, aResSub start()Dim i&, n&, aTmp, minNum, maxNumDim spNum&, strData, id, numaData Range("a1").CurrentRegionSet dic CreateObject("Scripting.Dictionary")For …

python执行文件函数,python如何运行函数

运行Python的函数&#xff0c;只需要调用函数名&#xff0c;在传递参数就可以&#xff0c;不必关心函数体内部的代码块。函数是带名字的代码块&#xff0c;用于完成具体的工作需要在程序中多次执行同一项任务时&#xff0c;你无需反复编写完成该任务的代码&#xff0c;而只需调…

php小白书,php小白的自学第一天

虽然我还没有学会Python&#xff0c;但是已经开学了……然后老师要验收以php编写的网页……(wdnmd )这两天先把这个网页设计处理了&#xff0c;Python也会学&#xff0c;Linux还没开始&#xff0c;web更是啥也不会……谁再和我说大学比高中轻松我跟他拼命(听说只要先熟悉了HTML…

linux配置文件为yum,yum的配置文件说明

1、网上的可供yum的链接&#xff0c;要求里面有repodata目录&#xff0c;该目录就是分析 RPM 软体后所产生的软体属性相依资料放置处。2、配置文件&#xff1a;/etc/yum.repos.d/CentOS-Base.repo&#xff0c;也可以此目录下建别的以.repo后缀的文件就行[base]&#xff1a;代表…

linux的命令窗口,(翻译)Linux命令行(二)

文件和目录操作cd /home 进入/home目录cd .. 返回上一层目录cd ../.. 返回上两层目录cd 回到用户目录cd ~utente 回到用户目录cd - 后退到刚才目录pwd …

linux emacs配置文件,[z]使用.emacs.d目录管理Emacs配置文件

第一启动emacs会在&#xff5e;目录下创建.emacs.d目录使用.emacs.d目录管理Emacs配置文件参考&#xff1a;Declaring .emacs BankruptcyEmacs的默认配置文件是.emacs&#xff0c;Emacs启动时会读取并执行.emacs中的LISP代码&#xff0c;用户使用.emacs达到自己的Emacs初始化配…

linux操作系统权限详解,Linux权限详解

权限权限是操作系统用来限制对资源访问的机制。权限一般分为读、写、执行。每个用户都有特定的权限、所属用户、所属组&#xff0c;通过这样的机制来限制哪些用户、哪些组可以对待特定的文件进行怎么样的操作。每个进程都是以某个用户的身份运行&#xff0c;所以进程的权限与该…

Linux 内核 颜色,Linux操作系统内核版的表示方法是( )

(8分)将煤粉隔绝空气加强热&#xff0c;除主要得到焦炭外&#xff0c;还能得到下表所列的物质&#xff1a;序号①②③④⑤⑥⑦名称甲烷一氧化碳乙烯苯在家庭中进行的下列实验或做法可行的是()A&#xff0e;用食醋区分食盐和纯碱B&#xff0e;将食盐经溶解、过滤、蒸发来制纯净的…

linux中检测用户信息的命令是,在Linux系统上检查用户所属组

Linux 管理员经常进行的一项操作之一&#xff1a;那就是把用户添加到现有组&#xff0c;这是在一些大环境工作的 Linux 管理员日常经常从事的操作之一&#xff0c;所以经常会在 Linux 系统上检查用户所属组&#xff0c;本文就来谈谈这方面的知识。我会因为业务需求而在我的环境…

Linux生态ox版本,从折腾说Linux生态圈

这几天折腾路由器过墙&#xff0c;累得一头大汗。这些天本来挺忙的&#xff0c;需要很多时间去做一些“正经的"事情&#xff0c;却因为原来的过墙方法不可以用了&#xff0c;又是各种学习网络知识&#xff0c;又是各种脚本配置的折腾。在这件事上足足花了有七八个小时。不…