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程序设计有所帮助。