删除失败,

删除失败,

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>&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;<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

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿满 2021-04-09 10:12:49

同学你好,关于同学的问题:

1、过滤器中的登录判断,同学可以参考一下如下的代码,

http://img1.sycdn.imooc.com//climg/606fb7170996c00106620309.jpg

如果是login登录,则直接放行,如果是其他的路径,则进行拦截,判断session中USER是否为空,如果为空,则表示没有登录,跳转到登录页面,如果不为空,则放行。在登录的Controller中,判断登录的用户名和密码是否正确,如果正确,则将USER存入session中。

2、本次作业没有要求删除分类后,该分类下的图书也要删除。如果同学要完成该功能,可以在删除分类时,先查询一下该分类下是否有图书信息,如果有,则遍历删除图书信息后,再删除分类。

祝学习愉快~

  • 提问者 rock221 #1

    过滤器这样写有个问题,登录后要跳转到后台页面进行session的set,这时候url里面就没有login了。也会被拦截了。 这样的话session还没有set成功阿就被拦截了。 session里面肯定是null啊啊 死循环啊。 

    2021-04-09 10:17:58
  • 好帮手慕阿满 回复 提问者 rock221 #2

    同学你好,登录的url是自己设置的,如果登录的url中不包括login,而是其他,可以在if判断中增加一个判断,例如if(path.toLowerCase.index("登录的url")!=-1),然后将其放行。这样登录时不会被拦截,可以在登录的Controller中将正确的用户信息存入Session。

    祝学习愉快~

    2021-04-09 14:55:55
  • 提问者 rock221 回复 好帮手慕阿满 #3
    那访问其他的内部信息,如果放心的话,就会造成没有登录直接进去的情况了啊,应该对所有的进行拦截吧,
    2021-04-09 14:58:30
好帮手慕阿满 2021-04-08 18:55:30

同学你好,同学提供的代码不完整,XMLDataSource中不存在getCategory()方法,无法具体测试。这里对同学的部分代码进行了检查,有如下问题:

1、过滤中建议只做是否登录的判断,判断session中的user是否为null,如果为空,表示没有登录,跳转到登录页面。获取用户名以及密码并登录的操作建议在登录的controller中完成,如果登录成功,将user信息存入session。

2、删除分类的代码也有问题,不能在for循环中直接抛出异常,

http://img1.sycdn.imooc.com//climg/606edfbb094996e309380287.jpg

如果要删除第2条数据,则第一次没有查询对应的分类,就会抛出异常。可以定义一个boolean类型值flag,并赋值为false,在循环中,如果查询到对应的分类,将flag的值改为true,在循环外对flag进行判断,如果为true,则表示查询到对应的分类,并进行删除,如果为false,则表示没有查询到对应的分类,抛出异常。

另外删除分类时,应该使用p.getParent().remove(p);,而不是nodes.remove(p);。

建议同学修改一下再试试。

祝学习愉快~

  • 提问者 rock221 #1

    过滤器我设置就是没有登录放行啊,但是我发现我有时候刷新的时候,就跳回登录页面了,这是为什么阿。

    2021-04-08 19:06:07
  • 提问者 rock221 #2

    老师还有一个问题, 在对图书分类删除之后, 对应该类的图书会被删除吗?如果会的话,怎么关联到一起阿。怎么删除分类后,对应该类的图书自动也消失啊。

    2021-04-08 19:18:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码