JSP基于dom解析xml实例详解
本文实例讲述了JSP基于dom解析xml的方法。分享给大家供大家参考,具体如下:
初次学习用dom操作xml文件,有很多不足之处,牛人多给点建议,练习时我没对中文做乱码处理,也没做验证哦!O(∩_∩)O~
实体类:User
publicclassUser{
privateStringname;
privateStringpwd;
privateStringemail;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicStringgetPwd(){
returnpwd;
}
publicvoidsetPwd(Stringpwd){
this.pwd=pwd;
}
publicStringgetEmail(){
returnemail;
}
publicvoidsetEmail(Stringemail){
this.email=email;
}
}
数据访问层接口:UserDao
publicinterfaceUserDao{
booleanlogin(Stringname,Stringpwd);
voidinsertUser(Useruser);
List<User>selectUser();
voidupdateUser(Useruser);
booleandeleteUser(Stringname);
publicUserfindByName(Stringname);
}
接口实现类:UserDaoImpl
publicclassUserDaoImplimplementsUserDao{
privatestaticfinalStringPATH="xml文件路径";
privatevoidbuild(Documentdom){
try{
//定义转换器
Transformerf=TransformerFactory.newInstance().newTransformer();
//设置输出的编码格式
f.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
//构建dom源
DOMSourcesource=newDOMSource(dom);
//指定文件存放的目标路劲
StreamResultsr=newStreamResult(newFile(PATH));
//执行转换操作
f.transform(source,sr);
}catch(Exceptione){
e.printStackTrace();
}
}
//登陆
publicbooleanlogin(Stringname,Stringpwd){
booleanflag=false;
try{
//根据以有的xml文件创建Document对象
Documentdom=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(newFile(PATH));
//获取user节点下的子节点
NodeListlist=dom.getElementsByTagName("user");
//遍历list,数据匹配退出
for(inti=0;i<list.getLength();i++){
Elementel=(Element)list.item(i);
if(name.equals(el.getAttribute("name"))&&pwd.equals(el.getAttribute("pwd"))){
flag=true;
break;
}
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnflag;
}
//添加操作
publicvoidinsertUser(Useruser){
try{
//创建全新的Document对象
Documentdom=DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
//创建根节点users
Elementel=dom.createElement("users");
//将根节点添加到dom中
dom.appendChild(el);
//创建子节点
Elemente2=dom.createElement("user");
//将子节点添加到根节点中
el.appendChild(e2);
//取得xml文件中现有的信息
List<User>users=this.selectUser();
for(inti=0;i<users.size();i++){
//创建节点user
Elementel3=dom.createElement("user");
Userus=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(ParserConfigurationExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
//查询操作
publicList<User>selectUser(){
List<User>userList=newArrayList<User>();
try{
//根据已有的xml文件创建dom
Documentdom=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(newFile(PATH));
//获取所有user节点下的子节点
NodeListlist=dom.getElementsByTagName("user");
for(inti=0;i<list.getLength();i++){
Useruser=newUser();
Elementelement=(Element)list.item(i);
user.setName(element.getAttribute("name"));
user.setPwd(element.getAttribute("pwd"));
user.setEmail(element.getAttribute("email"));
userList.add(user);
}
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnuserList;
}
//修改操作
publicvoidupdateUser(Useruser){
try{
//根据以有的xml文件创建dom
Documentdom=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(newFile(PATH));
//获取user节点下的子节点
NodeListlist=dom.getElementsByTagName("user");
//遍历list
for(inti=0;i<list.getLength();i++){
Elementel=(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(SAXExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(ParserConfigurationExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
//删除操作
publicbooleandeleteUser(Stringname){
try{
//根据以有xml文件创建domcumet对象
Documentdom=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(newFile(PATH));
//获取user节点下的子节点
NodeListlist=dom.getElementsByTagName("user");
//遍历list
for(inti=0;i<list.getLength();i++){
Elementel=(Element)list.item(i);
if(name.equals(el.getAttribute("name"))){
el.getParentNode().removeChild(el);
build(dom);
returntrue;
}
}
}catch(Exceptione){
//TODO:handleexception
}
returnfalse;
}
//根据name查找
publicUserfindByName(Stringname){
Useruser=newUser();
try{
//根据以后的xml文件创建document对象
Documentdom=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(newFile(PATH));
//获取user节点下的子节点集合
NodeListlist=dom.getElementsByTagName("user");
for(inti=0;i<list.getLength();i++){
Elementel=(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(Exceptione){
e.printStackTrace();
}
returnuser;
}
}
业务逻辑层接口:UserService
booleanlogin(Stringname,Stringpwd); voidinsertUser(Useruser); List<User>selectUser(); voidupdateUser(Useruser); booleandeleteUser(Stringname); publicUserfindByName(Stringname);
接口实现类:UserServiceImpl
publicclassUserServiceImplimplementsUserService{
UserDaodao=newUserDaoImpl();
publicbooleanlogin(Stringname,Stringpwd){
returndao.login(name,pwd);
}
publicvoidinsertUser(Useruser){
dao.insertUser(user);
}
publicList<User>selectUser(){
returndao.selectUser();
}
publicvoidupdateUser(Useruser){
dao.updateUser(user);
}
publicbooleandeleteUser(Stringname){
returndao.deleteUser(name);
}
publicUserfindByName(Stringname){
returndao.findByName(name);
}
}
控制层:UserAction
publicclassUserActionextendsActionSupport{
privateUseruser;
publicUsergetUser(){
returnuser;
}
publicvoidsetUser(Useruser){
this.user=user;
}
UserServiceuserService=newUserServiceImpl();
publicStringselectUser(){
HttpServletRequestrequest=ServletActionContext.getRequest();
List<User>users=newArrayList<User>();
users=userService.selectUser();
request.setAttribute("USER",users);
return"select";
}
/**
*登陆
*@return
*/
publicStringlogin(){
if(user.getName()!=null&&user.getPwd()!=null){
booleanflag=userService.login(user.getName(),user.getPwd());
if(flag){
returnSUCCESS;
}
}
returnERROR;
}
/**
*修改
*@return
*/
publicStringupdate(){
userService.updateUser(user);
return"update";
}
/**
*编辑
*@return
*/
publicStringedit(){
HttpServletRequestrequest=ServletActionContext.getRequest();
Stringname=request.getParameter("uName");
if(name!=null){
Useru=userService.findByName(name);
request.setAttribute("USER",u);
}
return"edit";
}
/**
*删除
*@return
*/
publicStringdelete(){
HttpServletRequestrequest=ServletActionContext.getRequest();
Stringname=request.getParameter("uName");
booleanflag=userService.deleteUser(name);
System.out.println(flag);
returnSUCCESS;
}
/**
*添加
*@return
*/
publicStringinsert(){
userService.insertUser(user);
return"insert";
}
}
struts.xml配置(本人用的的struts2):
<?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEstrutsPUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <packagename="file"extends="struts-default"> <actionname="list"class="com.jun.action.UserAction"method="selectUser"> <resultname="select">/list.jsp</result> </action> <actionname="login"class="com.jun.action.UserAction"method="login"> <resultname="success"type="redirectAction">/list.action</result> <resultname="error">/login.jsp</result> </action> <actionname="insert"class="com.jun.action.UserAction"method="insert"> <resultname="insert"type="redirectAction">/list.action</result> </action> <actionname="delete"class="com.jun.action.UserAction"method="delete"> <resulttype="redirect">/list.action</result> </action> <actionname="update"class="com.jun.action.UserAction"method="update"> <resultname="update"type="redirectAction">/list.action</result> </action> <actionname="edit"class="com.jun.action.UserAction"method="edit"> <resultname="edit">/update.jsp</result> </action> </package> </struts>
web.xml配置
<?xmlversion="1.0"encoding="UTF-8"?> <web-appversion="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.jspinsert.jsp,update.jsp
login.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> <html> <head> <basehref="<%=basePath%>"> <title>MyJSP'login.jsp'startingpage</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --> </head> <body> <ahref="list.action">首页</a>|<ahref="insert.jsp">注册</a> <formaction="login.action"method="post"> <table> <tr> <td>用户名:</td><td><inputname="user.name"type="text"></td> </tr> <tr> <td>密码:</td><td><inputtype="password"name="user.pwd"></td> </tr> <tr> <tdcolspan="2"align="center"><inputtype="submit"value="登录"></td> </tr> </table> </form> </body> </html>
list.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<%@tagliburi="/struts-tags"prefix="s"%>
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>MyJSP'list.jsp'startingpage</title>
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
<metahttp-equiv="description"content="Thisismypage">
<!--
<linkrel="stylesheet"type="text/css"href="styles.css">
-->
</head>
<body>
<ahref="insert.jsp">注册</a>
<tableborder="1">
<tr>
<tdalign="center"colspan="6"><fontsize="+3">用户列表</font></td>
</tr>
<tr>
<td>序号</td><td>用户名</td><td>密码</td><td>邮箱</td><td>删除</td><td>编辑</td>
</tr>
<c:forEachitems="${USER}"var="u"varStatus="temp">
<tr>
<td>${temp.index+1}</td><td>${u.name}</td><td>${u.pwd}</td><td>${u.email}</td><td><ahref="delete.action?uName=${u.name}">删除</a></td><td><ahref="edit.action?uName=${u.name}">编辑</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
insert.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://" +request.getServerName()+":"+request.getServerPort() +path+"/"; %> <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> <html> <head> <basehref="<%=basePath%>"> <title>MyJSP'register.jsp'startingpage</title> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --> </head> <body> <ahref="list.action">首页</a> <formaction="insert.action"method="post"> <table> <tr> <td> 用户名: </td> <td> <inputname="user.name"type="text"> </td> </tr> <tr> <td> 密码: </td> <td> <inputtype="password"name="user.pwd"> </td> </tr> <tr> <td> 邮箱: </td> <td> <inputtype="text"name="user.email"> </td> </tr> <tr> <tdcolspan="2"align="center"> <inputtype="submit"value="提交"> </td> </tr> </table> </form> </body> </html>
update.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="GBK"%>
<%@tagliburi="http://java.sun.com/jsp/jstl/core"prefix="c"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>MyJSP'update.jsp'startingpage</title>
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
<metahttp-equiv="description"content="Thisismypage">
<!--
<linkrel="stylesheet"type="text/css"href="styles.css">
-->
</head>
<body>
<ahref="list.action">首页</a>
<h2>更新操作</h2>
<formaction="update.action"method="post">
<table>
<c:setvalue="${USER}"var="user"></c:set>
<tr>
<td>用户名:</td><td><inputreadonly="readonly"name="user.name"value="${user.name}"type="text"></td>
</tr>
<tr>
<td>密码:</td><td><inputtype="password"value="${user.pwd}"name="user.pwd"></td>
</tr>
<tr>
<td>邮箱:</td><td><inputtype="text"value="${user.email}"name="user.email"></td>
</tr>
<tr>
<tdcolspan="2"align="center"><inputtype="submit"value="保存"></td>
</tr>
</table>
</form>
</body>
</html>
本人学习所用的user.xml文件
<?xmlversion="1.0"encoding="UTF-8"?> <users> <useremail=aaa@sina.comname="bbb"pwd="aaaaaa"/> <useremail=bbb@sina.comname="ccc"pwd="aaaaaa"/> </users>
希望本文所述对大家jsp程序设计有所帮助。