图书分类这一块

图书分类这一块

package com.imooc.servlet;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.imooc.dao.LibDaolmpl;
import com.imooc.service.LibServicelmpl;
/**
 * Servlet implementation class CatgoryServlet
 */
@WebServlet("/CatgoryServlet")
public class CatgoryServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CatgoryServlet() {
        super();
        // TODO Auto-generated constructor stub
    }
 /**
  * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  request.setCharacterEncoding("UTF-8");
  String id = request.getParameter("id");
  String catgoryName = request.getParameter("catgoryName");
  String description = request.getParameter("description");
  
  boolean flag = false;
  LibServicelmpl lsl = new LibServicelmpl();
  lsl.getLibDaolmpl().addBookCatgory(Long.parseLong(id), catgoryName, description);
  List<Map<String,Object>> catgory = lsl.getLibDaolmpl().getAllBookCatgory();
  for(Map m : catgory) {
   for(Object obj : m.keySet()) {
    System.out.println(obj + ":" + m.get(obj));
    if(m.get(obj).equals(Long.parseLong(id))) {
     flag = true;
     break;
    }
   }
  }
  System.out.println("flag:" + flag);
  if(flag == true) {
   request.setAttribute("msg1", "已存在该图书分类!");
   request.getRequestDispatcher("/catgory.jsp").forward(request, response);
  }else {
   request.getRequestDispatcher("/server.jsp").forward(request, response);
  }
  
  
 }
 /**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // TODO Auto-generated method stub
  doGet(request, response);
 }
}
package com.imooc.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class LibDaolmpl {
 private static final List<User> userDb = new ArrayList<User>(); //用户表
 private static final List<Map<String,Object>> categorys =  new ArrayList<Map<String,Object>>(); //图书分类
 private static final List<Book> books = new ArrayList<Book>(); //图书表
 
 public static List<User> getUserdb() {
  return userDb;
 }
 public static List<Book> getBooks() {
  return books;
 }
 // 用户注册
 public void regist(User user) {
  // 判断用户是否存在,存在则存入到集合中
  if(isUserExist(user.getUsername()) == 1) {
   userDb.add(user);
  }
 }
 
 // 用户登录
 public int login(String username,String password) {
  
  return 0;
 }
 
 // 判断指定的用户名在存储用户信息的集合中是否存在
 public int isUserExist(String username) {
  // 遍历集合,若存在该用户,则返回-1,否则返回1
  for(User u : userDb) {
   if(u.getUsername().equals(username)) {
    return -1;
   }
  }
  return 1;
 }
 
 // 添加图书分类
 public void addBookCatgory(Long id,String catgoryName,String description) {
  Map<String,Object> map = new HashMap<String,Object>();
  map.put("id", id);
  map.put("catgoryName", catgoryName);
  map.put("description", description);
  for(Map m : categorys) {
   // 判断id是否存在
   if(m.get("id").equals(id)) {
    // 判断分类名称是否一样
    if(m.get("catgoryName").equals(catgoryName)) {
     return ;
    }
    return ; 
   }
  }
  categorys.add(map);
 }
 
 // 获取所有图书分类
 public List<Map<String,Object>> getAllBookCatgory(){
  return categorys;
 }
 
 // 添加图书
 public void addBook(Book book) {
  
 }
 
 // 根据条件查询书籍信息
 public List<Book> getBooksByCondition(String bookID,String bookName,String catgoryName){
  return null;
  
 }
}
package com.imooc.service;
/**
 * LibDaolmpl类的对象,用于对该类中的方法进行调用
 * @author Administrator
 *
 */
import com.imooc.dao.LibDaolmpl;
public class LibServicelmpl {
 
 public LibDaolmpl getLibDaolmpl() {
  // 创建LibDaolmpl对象
  LibDaolmpl ldl = new LibDaolmpl();
  return ldl;
 }
 
}
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    String basePath=request.getScheme()+"://"+request.getServerName()
                +":"+request.getServerPort()+request.getContextPath()+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>图书分类添加</title>
</head>
<%
 String msg1 = "";
 if(request.getAttribute("msg1") != null){
  msg1 = (String)request.getAttribute("msg1");
 }
%>
<body>
 <center>
  <h1>图书分类添加</h1>
  <h3><font><%=msg1 %></font></h3>
  <form action="<%=basePath%>/CatgoryServlet" method="post">
   <table width="400px" cellspacing="0px" cellpadding="0px" border="1px">
    <tr>
     <td>分类ID</td>
     <td><input type="text" name="id"></td>
    </tr>
    <tr>
     <td>名&nbsp;字</td>
     <td><input type="text" name="catgoryName"></td>
    </tr>
    <tr>
     <td>描&nbsp;述</td>
     <td><input type="text" name="description"></td>
    </tr>
    <tr>
     <td colspan="2" style="text-align:center">
      <input type="submit" value="添加">
      <input type="reset" value="重置">
     </td>
    </tr>
   </table>
  </form>
 </center>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
    String basePath=request.getScheme()+"://"+request.getServerName()
                +":"+request.getServerPort()+request.getContextPath()+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>图书后台管理系统</title>
</head>
<frameset rows="20%,*">
 <frame src="./top.jsp"></frame>
 <frameset cols="10%,*">
  <frame src="./left.jsp"></frame>
  <frame name="main"></frame>
 </frameset>
</frameset>
</html>

老师,我在CatgoryServlet中想实现如果id是否存在,我第一次输入添加之后直接显示id存在了

http://img1.sycdn.imooc.com//climg/5dd91bc609c62f4b10740365.jpg

然后还有一个点是:如果不存在页面就跳成这个样子

http://img1.sycdn.imooc.com//climg/5dd91bfc09a32afe17870771.jpg

老师看看代码有什么逻辑错误吗

正在回答

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

3回答

同学你好,根据同学的回复,server.jsp页面是如上所展示的内容,那这个server.jsp就是一个多窗口页面,所以出现了嵌套。

        同学可以换一个页面-->分类展示categoryList.jsp页面或者bookList.jsp图书展示页面,使用重定向再来试一下,是否还会出现嵌套的情况。

http://img1.sycdn.imooc.com//climg/5ddbab51095e556708170115.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • Levinson 提问者 #1
    老师,按照你说的,我试了下还是不可以,那如果我直接就不重定向到server.jsp了,直接重定向到addBook.jsp的话可以吗?
    2019-11-25 18:33:25
  • 好帮手慕小班 回复 提问者 Levinson #2
    同学你好,直接重定向到addBook.jsp也是可以的。如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
    2019-11-25 19:23:59
好帮手慕小班 2019-11-24 17:02:57

同学你好,添加图书成功后,直接使用转发(forword),跳转到了server.jsp,而server.jsp是否是如下页面内容:

http://img1.sycdn.imooc.com//climg/5dda469f0993484307550379.jpg

同学可以修改转发方式位重定向再试一下,例如:

http://img1.sycdn.imooc.com//climg/5dda46e30935821508550113.jpg

这是因为,当使用转发时,在会当前请求下将frameset中的内容嵌套展示,我们可以使用重定向,让它直接重新加载。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 Levinson #1
    老师,server.jsp页面的内容是老师所展示的,我使用重定向的话还是被嵌套在里面。
    2019-11-25 15:38:32
好帮手慕小班 2019-11-24 11:52:34

同学你好,1、在CatgoryServlet中 if(m.get(obj).equals(Long.parseLong(id))) {}的判断有误,m.get(obj)是String类型的内容,id也是String类型的内容,直接使用equals方法的直接比较就可以,不需要将id转变为long类型数据。

    2、不需要添加该图书分类是否存在的判断,因为在添加时直接判断类id、name等内容是否出现同名的内容,例如:

http://img1.sycdn.imooc.com//climg/5dd9fc5209615fe109900492.jpg

    3、如果需要展示添加是否成功,可以修改这个addBookCatgory方法的返回值,例如;

http://img1.sycdn.imooc.com//climg/5dd9fcf90959b7dc09340490.jpg

对应在Servlet中将这个返回值展示到页面中,比如:

http://img1.sycdn.imooc.com//climg/5dd9fdb109b8d2f711990430.jpg

    4、如果不存在页面,页面跳转出现如上问题,只看贴出代码并没有问题,同学在过滤器中的配置是怎样的,建议将过滤器配置中的内容贴出,同学是否在<url-pattern>中的配置出现了失误。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 Levinson #1
    老师,过滤器那一部分我还没有去写。我只是想先把大概的给写出来,再来进一步去优化
    2019-11-24 12:17:28
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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