删除失败,
xml类:
1 | package com.imooc.library.utils;<br><br> import java.io.FileOutputStream;<br> import java.io.IOException;<br> import java.io.OutputStreamWriter;<br> import java.io.Writer;<br> import java.net.URLDecoder;<br> import java.util.ArrayList;<br> import java.util.List;<br><br> import org.dom4j.Document;<br> import org.dom4j.DocumentException;<br> import org.dom4j.Element;<br> import org.dom4j.Node;<br> import org.dom4j.io.SAXReader;<br><br> import com.imooc.library.entity.Category;<br> import com.imooc.library.entity.User;<br><br> /**<br> * 数据源类,用于读取xml信息<br> * @author nieyafei<br> *<br> */ <br> public class XmlDataSource {<br> //创建userData对象,且唯一<br> private static List<User> userData=new ArrayList();<br> //创建图书分类对象,category,且唯一<br> private static List<Category> categoryData=new ArrayList();<br> //创建和xml文件进行交互的变量<br> private static String userDataFile; //用户账号文件读取<br> private static String categoryDataFile; //分类文件读取<br> //添加静态块,当类加载的时候读取文件,因为uesr类不存在更新信息,所以不用添加更新方法<br> static {<br> //获取当前类编译后存放classes类下对应的目录文件路径-user.xml;<br> userDataFile=XmlDataSource.class.getResource("/user.xml").getPath();<br> reloadUser();<br> }<br> //添加静态块,用来存放读取book和category.xml,已经需要新增改写,所以需要添加更新方法<br> static {<br> //获取当前类编译后存放classes类下对应的目录文件路径-category.xml;<br> categoryDataFile=XmlDataSource.class.getResource("/category.xml").getPath();<br> reloadCategory();<br> }<br><br> /**<br> * 初始化用户的方法,读取xml内用户信息<br> */<br> public static void reloadUser() {<br> //获取的文件是base64格式,转换成字符串,通过核心类URLDecoder实现<br> URLDecoder decoder=new URLDecoder();<br> try {<br> //通过decoder.decode方法对其进行转换utf-8字符集<br> userDataFile=decoder.decode(userDataFile,"utf-8");<br> //dom4j读取文件,返回document对象<br> SAXReader reader=new SAXReader();<br> Document document=reader.read(userDataFile); <br> //通过xpath对根节点进行获取 ,返回Nodes的list集合<br> List<Node> nodes=document.selectNodes("/root/user");<br> //防止重复信息录入,清除之前的集合信息<br> userData.clear();<br> //进行遍历,并对元素进行获取并载入user对象内<br> for(Node node:nodes) {<br> //node是集合需转换成element对象<br> Element element=(Element)node;<br> //对user对象进行实例化,<br> User user=new User();<br> user.setName(element.elementText("name")); //用户名的文本<br> user.setPassword(element.elementText("password")); //密码的文本;<br> //存入集合中<br> userData.add(user);<br> }<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> /**<br> * 获取所有用户信息<br> * @return userData集合,也就是user对象;<br> */<br> public static List<User> getUsers(){<br> return userData;<br> }<br><br> /**<br> * 初始化分类的方法<br> */<br> private static void reloadCategory() {<br> //从base64格式转为字符串<br> URLDecoder decoder=new URLDecoder();<br> System.out.println(categoryDataFile);<br> try {<br> categoryDataFile=decoder.decode(categoryDataFile,"utf-8");<br> //dom4j读取文件<br> SAXReader reader=new SAXReader();<br> Document document=reader.read(categoryDataFile); //获取document对象<br> //xpath 多根节点下的子节点进行读取<br> List<Node> nodes=document.selectNodes("/root/catergory");<br> //对之前集合内信息清除<br> categoryData.clear();<br> //遍历nodes对象<br> for(Node node:nodes) {<br> //每个node转换成element对象<br> Element element=(Element)node;<br> //对category类进行实例化,把节点载入进去<br> Category category=new Category();<br> category.setId(Integer.parseInt(element.elementText("categoryId")));<br> category.setName(element.elementText("categoryName"));<br> categoryData.add(category); //封装到集合内;<br> }<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br><br> }<br> /**<br> * 添加分类的方法<br> */<br> public static void appendCategory(Category category) {<br> //通过dom4j对文件进行读取<br> SAXReader reader=new SAXReader();<br> Writer writer=null;<br> try {<br> //读取文件,返回dom对象<br> Document document=reader.read(categoryDataFile);<br> //得到原始文件的根节点<br> Element root=document.getRootElement();<br> //通过根节点创建子节点<br> Element p=root.addElement("catergory");<br> //在子节点中创建子节点+属性值<br> p.addElement("categoryId").addText(category.getId().toString()); //创建id节点+前端传来的p.属性值<br> p.addElement("categoryName").addText(category.getName());//名称节点+属性值<br> //将节点信息写入文件<br> writer=new OutputStreamWriter(new FileOutputStream(categoryDataFile),"utf-8");<br> //通过dom把p写入到文件内<br> document.write(writer);<br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }finally {<br> if(writer!=null) {<br> try {<br> writer.close(); //关闭输出流<br> } catch (IOException e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> } <br> //更新信息<br> reloadCategory();<br> }<br> }<br><br> /**<br> * 删除分类方法<br> * @param categoryId 根据id删除<br> */<br> public static void deleteCatgory(String categoryId) {<br> //通过dom4j读取文件<br> SAXReader reader=new SAXReader();<br> Writer writer=null;<br> try {<br> Document document=reader.read(categoryDataFile);<br> //通过xpath 对文件中节点读取<br> List<Node> nodes=document.selectNodes("/root/catergory");<br> //通过遍历<br> Element p=null;<br><br> for(Node node:nodes) {<br> Element element=(Element)node;<br><br> if(element.element("categoryId").getText().equals(categoryId)) {<br><br> p=element;<br> break;<br> }else {<br> throw new RuntimeException("无此id");<br> }<br> }<br><br> nodes.remove(p);<br> //写入<br> writer=new OutputStreamWriter(new FileOutputStream(categoryDataFile),"utf-8");<br> document.write(writer);<br><br> } catch (Exception e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }finally {<br> if(writer!=null) {<br> try {<br> writer.close();<br> } catch (IOException e) {<br> // TODO Auto-generated catch block<br> e.printStackTrace();<br> }<br> }<br> reloadCategory();<br> }<br> }<br> |
用户类:
1 | package com.imooc.library.entity;<br><br><br> //用户账号信息 javabean<br>public class User {<br> private String name; //账号<br> private String password; //密码<br><br> //构造方法<br> public User() {<br><br> }<br> //get/set方法<br> public String getName() {<br> return name;<br> }<br><br> public void setName(String name) {<br> this.name = name;<br> }<br><br> public String getPassword() {<br> return password;<br> }<br><br> public void setPassword(String password) {<br> this.password = password;<br> }<br><br> @Override<br> public String toString() {<br> return "User [name=" + name + ", password=" + password + "]";<br> }<br><br>}<br> |
用户实现类:
1 | package com.imooc.library.service;<br><br> import java.util.List;<br><br> import com.imooc.library.entity.User;<br><br> /**<br> * 用户处理类<br> * @author nieyafei<br> *<br> */ <br> public class UserServiceImpl {<br><br> /**<br> * 用户账号密码匹配处理<br> * @param listUser 数据库已有的user对象<br> * @param user 前端传来的user属性<br> * @return 0代表登录失败,1代表登录成功<br> */ <br> public int login(List<User> listUser,User user) {<br> int n= 0 ;<br> //对原有的数据库内的信息进行遍历,取出的值和现输入的值进行匹配,true返回1,false返回0<br> for(User oldUser:listUser) {<br><br> if(oldUser.getName().equals(user.getName())&&oldUser.getPassword().equals(user.getPassword())) {<br> System.out.println("--------------------------4");<br> n=1;<br> break;<br> }else{<br> System.out.println("--------------------------5");<br> n=0;<br> break; <br> }<br> } <br> return n;<br> }<br>}<br> |
分类实现:
1 | package com.imooc.library.service;<br><br> import java.util.List;<br><br> import com.imooc.library.entity.Category;<br> import com.imooc.library.utils.XmlDataSource;<br><br> /**<br> * 图书分类处理类<br> * @author nieyafei<br> *<br> */ <br> public class CategoryServiceImpl {<br><br><br> /**<br> * 分类显示方法<br> * @return 所有分类数据<br> */ <br> public List<Category> showCategory(){<br> List<Category> showCategory=XmlDataSource.getCategory();<br> return showCategory;<br><br> }<br> /**<br> * 添加分类方法<br> * @param categoryId 分类id<br> * @param catgoryName 分类名称<br> */ <br> public void addCatgory(String categoryId, String catgoryName) {<br> //对前端信息进行封装<br> Category category=new Category();<br> category.setId(Integer.parseInt(categoryId));<br> category.setName(catgoryName);<br> XmlDataSource.appendCategory(category);<br> }<br><br> /**<br> * 通过id删除分类方法 <br> * @param categoryId 分类的id<br> */<br> public void deleteCategory(String categoryId) {<br> System.out.println("--------------------删除2");<br> XmlDataSource.deleteCatgory(categoryId);<br> }<br>}<br> |
分类:
1 | package com.imooc.library.entity;<br><br> /**<br> * 图书分类javabean <br> * @author nieyafei<br> *<br> */ <br> public class Category {<br><br> private Integer id; //分类id<br> private String name; //分类名称<br><br> public Category() {<br><br> }<br><br> public Integer getId() {<br> return id;<br> }<br><br> public void setId(Integer id) {<br> this.id = id;<br> }<br><br> public String getName() {<br> return name;<br> }<br><br> public void setName(String name) {<br> this.name = name;<br> }<br><br> @Override<br> public String toString() {<br> return "分类: [id=" + id + ", name=" + name + "]";<br> }<br><br><br>}<br> |
监听器:
1 | package com.imooc.library.utils;<br><br> import java.io.IOException;<br> import java.util.List;<br><br> import javax.servlet.Filter;<br> import javax.servlet.FilterChain;<br> import javax.servlet.FilterConfig;<br> import javax.servlet.ServletContext;<br> import javax.servlet.ServletException;<br> import javax.servlet.ServletRequest;<br> import javax.servlet.ServletResponse;<br> import javax.servlet.http.HttpServletRequest;<br> import javax.servlet.http.HttpServletResponse;<br> import javax.servlet.http.HttpSession;<br><br> import com.imooc.library.entity.User;<br> import com.imooc.library.service.UserServiceImpl;<br><br> /**<br> * 判断用户是否登录的过滤器<br> * <br> * @author nieyafei<br> *<br> */ <br> public class AuthFilter implements Filter {<br> private UserServiceImpl userServiceImpl = new UserServiceImpl();<br><br> @Override <br> public void destroy() {<br> // TODO Auto-generated method stub<br><br> }<br><br> @Override<br> public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)<br> throws IOException, ServletException {<br> // 转换http<br> HttpServletRequest req = (HttpServletRequest) request;<br> HttpServletResponse res = (HttpServletResponse) response;<br> // 获取uri<br> String uri = req.getRequestURI();<br><br> // 获取前端的账号,密码属性<br> String userName = req.getParameter("username");<br> String userPassword = req.getParameter("password");<br> // 获取servletContext中的原始账号数据集合<br> ServletContext context = req.getServletContext();<br> List<User> userData = (List<User>) context.getAttribute("userData");<br> // 把前端参数封装到uesr对象内<br> User user = new User();<br> user.setName(userName);<br> user.setPassword(userPassword);<br><br> // 根据userServiceImpl中的方法判断,返回值1说明匹配成功,则转发到后台页面,返回0则登录失败,转发登录页面<br> if ((userServiceImpl.login(userData, user)) == 1) {<br> System.out.println("--------------------------2");<br> // 登录成功则把账号信息存入session中,方便过滤器判断<br> req.getSession().setAttribute("userName", user); // user则为当前请求中的账号参数<br><br> }<br><br> System.out.println(uri);<br><br> // 对当前请求的uri进行判断<br> if (uri.startsWith("/login")||uri.endsWith(".css")||uri.endsWith(".png")) {<br> // 放行<br> System.out.println("-----------------拦截登录过滤器1放行");<br> chain.doFilter(request, response);<br> } else if (req.getSession().getAttribute("userName") != null) { //判断登录是否输入密码<br> // 放行<br> System.out.println("-----------------拦截登录过滤器2放行");<br><br> chain.doFilter(request, response);<br>// }else if(request.getParameter("categoryId")!=null) { //判断分页输入信息后刷新是否放行;<br>// System.out.println("-----------------拦截登录过滤器3放行");<br>// chain.doFilter(request, response);<br> }<br><br> else {<br> System.out.println("-----------------拦截登录过滤器4转回登录页面");<br> res.sendRedirect("/login.jsp");<br> }<br><br> }<br><br> @Override<br> public void init(FilterConfig arg0) throws ServletException {<br> // TODO Auto-generated method stub<br><br> }<br><br>}<br> |
过滤器:
1 | package com.imooc.library.utils;<br><br> import java.util.List;<br><br> import javax.servlet.ServletContextEvent;<br> import javax.servlet.ServletContextListener;<br><br> import com.imooc.library.entity.User;<br><br><br> /**<br> * 监听器,把user的集合存放到ServletContext中;<br> * @author nieyafei<br> *<br> */ <br> public class InitListener implements ServletContextListener {<br><br> @Override <br> public void contextDestroyed(ServletContextEvent arg0) {<br> // TODO Auto-generated method stub<br><br> }<br><br> @Override<br> public void contextInitialized(ServletContextEvent sce) {<br> //获取集合<br> List<User> userData=XmlDataSource.getUsers();<br> //把原始数据保存到servletContext中;<br> sce.getServletContext().setAttribute("userData", userData);<br> System.out.println("--------------------监听器初始化成功");<br><br> }<br><br>}<br> |
xml
1 | <? xml version = "1.0" encoding = "UTF-8" ?>< br > <!-- 账号密码文件 --> < br >< root >< br > < user >< br > < name >admin</ name >< br > < password >123456</ password >< br > </ user >< br > < user >< br > < name >张三</ name >< br > < password >123</ password >< br > </ user >< br > < user >< br > < name >李四</ name >< br > < password >123</ password >< br > </ user >< br ></ root >< br > |
1 | <? xml version = "1.0" encoding = "UTF-8" ?>< br >< root >< br >< catergory >< br >< categoryId >1</ categoryId >< br >< categoryName >计算机类</ categoryName >< br ></ catergory >< br >< catergory >< br >< categoryId >2</ categoryId >< br >< categoryName >历史类</ categoryName >< br ></ catergory >< br >< catergory >< br >< categoryId >3</ categoryId >< br >< categoryName >学科类</ categoryName >< br ></ catergory >< br ></ root >< br > |
jsp:
1 | <%@page contentType="text/html;charset=utf-8"%>< br ><!DOCTYPE html>< br >< html >< br > < head >< br > < meta charset = "UTF-8" >< br > < title >登录</ title >< br > < link rel = "stylesheet" href = "/css/login.css" >< br > < script type = "text/javascript" src = "/js/jquery-3.6.0.js" ></ script >< br > < script type = "text/javascript" src = "/js/sweetalert2.js" ></ script >< br > < script type = "text/javascript" >< br > //账号校验事件< br > function checkEmpty(input,errSelector){< br > //获取value值< br > var val=$(input).val();< br > //判断val的值是否为空< br > if($.trim(val)==""){< br > $(errSelector).text("请输入账号");< br > return false;< br > }else{< br > $(errSelector).text("");< br > return true;< br > }< br > }< br > //密码效验事件< br > function checkPassword(input,errSelector){< br > //获取密码的value值< br > var val=$(input).val();< br > //用正则表达式设置密码< br > var regex=/^[a-z|A-Z|0-9]+$/;< br > //用来判断是否匹配< br > if(regex.test(val)==false){< br > $(errSelector).text("无效密码");< br > return false;< br > }else{< br > $(errSelector).text("");< br > return true;< br > }< br >< br > }< br > //表单提交事件校验< br > function checkSubmit(){< br > var r1=checkEmpty('#name','#errName');< br > var r2=checkPassword('#pwd','#errPassword');< br > if(ri&&r2){< br > return true;< br > }else{< br >< br > return false;< br > }< br >< br > }< br >< br > </ script >< br > </ head >< br > < body >< br > < div class = "login" >< br > < div class = "header" >< br > < h1 >< br > < a href = "/login.do" >登录</ a >< br > </ h1 >< br > < button ></ button >< br > </ div >< br > < form action = "/management?method=login" method = "post" onsubmit = "return checkSubmit()" >< br > < div class = "name" >< br > < span id = "errName" style = "color:red" ></ span > <!-- 显示错误信息 --> < br > < input type = "text" id = "name" name = "username" onblur = "checkEmpty('#name','#errName')" >< br > < p ></ p >< br > </ div >< br > < div class = "pwd" >< br > < span id = "errPassword" style = "color:red" ></ span > <!-- 显示错误信息 --> < br > < input type = "password" id = "pwd" name = "password" onblur = "checkPassword('#pwd','#errPassword')" >< br > < p ></ p >< br > </ div >< br >< br > < div class = "btn-red" >< br > < input type = "submit" value = "登录" id = "login-btn" >< br > </ div >< br > </ form >< br > </ div >< br > </ body >< br ></ html >< br > |
1 | <%@page language="java" contentType="text/html;charset=utf-8" %>< br ><!DOCTYPE html>< br >< html >< br > < head >< br > < meta charset = "UTF-8" >< br > < title >图书后台管理</ title >< br > < link rel = "stylesheet" type = "text/css" href = "/css/index.css" >< br > < link rel = "stylesheet" type = "text/css" href = "/css/bootstrap.min.css" >< br >< br > </ head >< br >< br > < body >< br > < header >< br > < div class = "container" >< br > < nav >< br > < a href = "bookList.html" >图书信息管理</ a >< br > </ nav >< br > < nav >< br > < a href = "management?method=category_list" >分类管理</ a >< br > </ nav >< br >< br > </ div >< br > </ header >< br > < section class = "banner" >< br > < div class = "container" >< br > < div >< br > < h1 >图书管理系统</ h1 >< br > < p >图书信息管理</ p >< br > </ div >< br > </ div >< br > </ section >< br > < section class = "main" >< br >< br >< br > < div class = "container" >< br > < form class = "form-horizontal" action = "/searchBook" method = "post" >< br > < div class = "form-group" style = "float: right;" >< br > < div class = "col-sm-offset-2 col-sm-10" >< br > < button type = "submit" class = "btn btn-primary" >查询</ button > < br > </ div >< br > </ div >< br > < div class = "form-group" style = "float: right;width: 300px;" >< br > < div class = "col-sm-8" >< br > < input name = "searchContent" class = "form-control" id = "searchContent" <br> placeholder="输入要查询的分类" style="width: 250px">< br > </ div >< br > </ div >< br >< br >< br > </ form >< br > </ div >< br > < div class = "container" >< br >< br > < table class = "table table-striped" >< br > < thead >< br >< br > < tr >< br > < th >序号</ th >< br > < th >图书编号</ th >< br > < th >图书名称</ th >< br > < th >分类</ th >< br > < th >价格</ th >< br > < th >图书封面</ th >< br > < th >操作</ th >< br >< br > </ tr >< br > </ thead >< br > < tbody >< br > < c:forEach items = "" var = "" >< br > < tr id = "tr1" >< br > < td >1</ td >< br > < td >book0001</ td >< br > < td >Java基础</ td >< br > < td >计算机类</ td >< br > < td >¥29</ td >< br > < td >< img src = "img/g1.jpg" ></ td >< br > < td >< br > < a href = "/updateBook?bookId=book0001" >修改</ a >< br > < a href = "/deleteBook?bookId=book0001" >删除</ a >< br >< br > </ td >< br > <!--在循环显示数据时,此处的book0001可以用EL表达式进行替换--> < br >< br > </ tr >< br > </ c:forEach >< br > </ tbody >< br > </ table >< br > </ div >< br > </ section >< br > < section class = "page" >< br > < div class = "container" >< br > < div id = "fatie" >< br > < a href = "addBook.jsp" >< button >新建</ button ></ a >< br > </ div >< br > </ div >< br > </ section >< br > < footer >< br > copy@慕课网< br > </ footer >< br > </ body >< br ></ html >< br > |
1 | <%@page contentType="text/html;charset=utf-8"%>< br ><%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>< br ><!DOCTYPE html>< br >< html >< br > < head >< br > < meta charset = "UTF-8" >< br > < title >图书后台管理</ title >< br > < link rel = "stylesheet" href = "../../css/index.css" >< br > < link rel = "stylesheet" href = "../../css/bootstrap.min.css" >< br > </ head >< br >< br > < body >< br > < header >< br > < div class = "container" >< br > < nav >< br > < a href = "bookList.html" >图书信息管理</ a >< br > </ nav >< br > < nav >< br > < a href = "management?method=category_list" >分类管理</ a >< br > </ nav >< br >< br > </ div >< br > </ header >< br > < section class = "banner" >< br > < div class = "container" >< br > < div >< br > < h1 >图书管理系统</ h1 >< br > < p >图书分类管理</ p >< br > </ div >< br > </ div >< br > </ section >< br > < section class = "main" >< br > < div class = "container" >< br > < table class = "table table-striped" >< br > < thead >< br >< br > < tr >< br > < th >序号</ th >< br > < th >分类编号</ th >< br > < th >分类名称</ th >< br > < th >操作</ th >< br > </ tr >< br > </ thead >< br > < tbody >< br > < c:forEach items = "${requestScope.category }" var = "category" varStatus = "idx" >< br > < tr >< br > < td >${idx.index+1 }</ td >< br > < td >${category.id }</ td >< br > < td >${category.name }</ td >< br > < td >< a href = "/management?method=delete_category&id=${category.id }" >删除</ a ></ td >< br > <!--在循环显示数据时,此处的ca0001可以用EL表达式进行替换--> < br >< br > </ tr >< br > </ c:forEach >< br > </ tbody >< br > </ table >< br > </ div >< br > </ section >< br > < section class = "page" >< br > < div class = "container" >< br > < div id = "fatie" >< br > < a href = "management?method=add_category" >< button >新建</ button ></ a >< br > </ div >< br > </ div >< br > </ section >< br > < footer >< br > copy@慕课网< br > </ footer >< br > </ body >< br ></ html >< br > |
1 | <%@page language="java" contentType="text/html;charset=utf-8" %>< br >< html >< br > < head >< br > < meta charset = "UTF-8" >< br > < title >新建图书分类</ title >< br > < link rel = "stylesheet" href = "../../css/bootstrap.min.css" >< br > < link rel = "stylesheet" href = "../../css/add.css" >< br > < script type = "text/javascript" src = "../../js/jquery-3.6.0.js" ></ script >< br > < script type = "text/javascript" src = "../../js/category.js" ></ script >< br > < script type = "text/javascript" >< br > //表单验证< br > function checkSubmit(){< br > //所有的表单项校验通过,返回true,提交,否则false,不提交< br > var r1=checkId("#categoryId","#errId"); //获取r1的返回值< br > var r2=checkName("#categoryName","#errName"); //获取r2的返回值< br > //判断< br > if(r1&&r2){< br > return true;< br > }else{< br > return false;< br > }< br >< br > }< br >< br > </ script >< br > </ head >< br > < body >< br > < nav class = "navbar navbar-default" >< br > < div class = "container" >< br > < div class = "navbar-header" >< br > < a class = "navbar-brand" href = "" >< br > 图书分类管理< br > </ a >< br > </ div >< br > </ div >< br > </ nav >< br > < div class = "container" >< br > < div class = "jumbotron" >< br > < h1 >Hello, XXX!</ h1 >< br > < p >请小心地新增图书分类,要是建了一个错误的就不好了。。。</ p >< br > </ div >< br > < div class = "page-header" >< br > < h3 >< small >新建</ small ></ h3 >< br > </ div >< br > < form class = "form-horizontal" action = "/management?method=create_category" method = "post" onsubmit = "return checkSubmit()" >< br > < div class = "form-group" >< br > < label for = "name" class = "col-sm-2 control-label" >分类ID :</ label >< br > < div class = "col-sm-8" >< br > < span id = "errId" style = "color:red" ></ span > <!-- 显示错误信息 --> < br > < input name = "categoryId" class = "form-control" id = "categoryId" onblur = "checkId('#categoryId','#errId')" >< br > </ div >< br > </ div >< br > < div class = "form-group" >< br > < label for = "name" class = "col-sm-2 control-label" >分类名称 :</ label >< br > < div class = "col-sm-8" >< br > < span id = "errName" style = "color:red" ></ span > <!-- 显示错误信息 --> < br > < input name = "categoryName" class = "form-control" id = "categoryName" onblur = "checkName('#categoryName','#errName')" >< br > </ div >< br > </ div >< br >< br > < div class = "form-group" >< br > < div class = "col-sm-offset-2 col-sm-10" >< br > < button type = "submit" class = "btn btn-primary" >保存</ button > < br > </ div >< br > </ div >< br > </ form >< br > </ div >< br > < footer class = "text-center" >< br > copy@imooc< br > </ footer >< br > </ body >< br ></ html >< br > |
老师我在删除分页的时候,删除不成功,总提示没有此id,请帮忙查看,
还有过滤器有没有问题啊;
正在回答 回答被采纳积分+1
同学你好,同学提供的代码不完整,XMLDataSource中不存在getCategory()方法,无法具体测试。这里对同学的部分代码进行了检查,有如下问题:
1、过滤中建议只做是否登录的判断,判断session中的user是否为null,如果为空,表示没有登录,跳转到登录页面。获取用户名以及密码并登录的操作建议在登录的controller中完成,如果登录成功,将user信息存入session。
2、删除分类的代码也有问题,不能在for循环中直接抛出异常,
如果要删除第2条数据,则第一次没有查询对应的分类,就会抛出异常。可以定义一个boolean类型值flag,并赋值为false,在循环中,如果查询到对应的分类,将flag的值改为true,在循环外对flag进行判断,如果为true,则表示查询到对应的分类,并进行删除,如果为false,则表示没有查询到对应的分类,抛出异常。
另外删除分类时,应该使用p.getParent().remove(p);,而不是nodes.remove(p);。
建议同学修改一下再试试。
祝学习愉快~
- 参与学习 人
- 提交作业 9404 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧