SelectBookServlet里为什么取不到showBooks.jsp里的查询参数?
<%@page import="com.shenjw.domain.Book"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%
String addFlag = request.getParameter("addFlag");
/* List<Book> books = (List<Book>)session.getAttribute("books"); */
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path;
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>图书查询</title>
<script type="text/javascript" src="<%=basePath%>/resources/js/jquery-1.4.2.js"></script>
<script type="text/javascript">
var flag = "<%=addFlag %>"
if("1"==addFlag){
alert("添加成功!")
}
</script>
</head>
<body>
<center>
<h1>图书查询</h1>
<p>
图书ID:<input type="text" name="bookID">
图书名:<input type="text" name="bookName">
分类:<input type="text" name="categoryName">
<input type="button" value="查询" id="search">
</p>
<hr>
<table width="800px" cellspacing="0px" cellpadding="0px" border="1px">
<thead>
<tr>
<th>图书ID</th>
<th>书名</th>
<th>分类</th>
<th>价格</th>
<th>描述</th>
</tr>
</thead>
<tbody id="cont">
<c:forEach items="${books }" var="book">
<tr>
<td>${book.getBookId() }</td>
<td>${book.getBookName() }</td>
<td>${book.getBookCategory() }</td>
<td>${book.getPrice() }</td>
<td>${book.getDescription() }</td>
</tr>
</c:forEach>
</tbody>
</table>
</center>
<script type="text/javascript">
/* 根据条件查询*/
$("#search").click(function(){
$.ajax({
url:"<%=basePath%>/SelectBookServlet",
type:"post",
dataType:"json",
success:function(result){
var list = eval(result);
var content=null;
for(var i in list){
var id = list[i].bookId;
var bookName = list[i].bookName;
var bookCategory = list[i].bookCategory;
var price = list[i].price;
var description = list[i].description;
content = content+"<tr><td>"+id+"</td><td>"+bookName+"</td><td>"
+bookCategory+"</td><td>"+price+"</td><td>"+description+"</td></tr>";
$("#cont>tr").remove();
}
$("#cont").html(content);
}
});
});
</script>
</body>
</html>
package com.shenjw.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.json.JSONArray;
import com.shenjw.domain.Book;
import com.shenjw.service.LibServiceImpl;
/**
* 图书查询Servlet
*/
public class SelectBookServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//request.getRequestDispatcher("./showBooks.jsp").forward(request, response);
//1、获取ajax传递过来的参数信息
String flag = request.getParameter("flag");
// 获取查询信息
String id = request.getParameter("bookID");
String bookName = request.getParameter("bookName");
String category = request.getParameter("categoryName");
LibServiceImpl libServiceImpl = (LibServiceImpl) this.getServletContext().getAttribute("libServiceImpl");
List<Book> list = libServiceImpl.getBooksByCondition(id,bookName,category);
System.out.println(id+" "+bookName+" "+category);
System.out.println(list);
//创建JSONArray对象,将list存进去
JSONArray jsonArray = new JSONArray(list);
//将数组传递会页面
response.getOutputStream().write(jsonArray.toString().getBytes("utf-8"));
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
正在回答
你的数据应该是没有进行传递,在Ajax中,增加一个data项:
data : {
bookID : $("input[name=bookID]").val(),
bookName : $("input[name=bookName]").val(),
catgoryName : $("input[name=catgoryName]").val()
},增加以后再试下~~
如果解决了你的疑惑,请采纳,祝学习愉快!
package com.shenjw.service;
import java.util.List;
import java.util.Map;
import com.shenjw.dao.LibDaoImpl;
import com.shenjw.domain.Book;
import com.shenjw.domain.User;
public class LibServiceImpl {
LibDaoImpl libDaoImpl = new LibDaoImpl();
// 用户注册
public void regist(User user) {
libDaoImpl.regist(user);
}
// 用户登录
public int login(String username,String password) {
return libDaoImpl.login(username, password);
}
// 判断指定的用户名在数据库中是否存在
public int isUserExist(String username) {
return libDaoImpl.isUserExist(username);
}
// 添加图书分类
public void addBookCategory(Long id,String categoryName,String description) {
libDaoImpl.addBookCategory(id, categoryName, description);
}
//获取图书分类
public List<Map<String, Object>> getCategory(){
return libDaoImpl.getCategory();
}
// 根据条件来查询书籍信息
public List<Book> getBooksByCondition(String bookID,String bookName,String category){
return libDaoImpl.getBooksByCondition(bookID, bookName, category);
}
//获取图书列表
public List<Book> getBooks(){
return libDaoImpl.getBooks();
}
}
package com.shenjw.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.shenjw.domain.Book;
import com.shenjw.domain.User;
//数据处理类
public class LibDaoImpl {
private static final List<User> userDb = new ArrayList<User>();//用户表
private static final List<Map<String,Object>> bookCategoryDb = new ArrayList<Map<String,Object>>();//图书分类
private static final List<Book> books = new ArrayList<Book>();//图书表
// 用户注册方法
public void regist(User user) {
userDb.add(user);
}
// 用户登录方法
public int login(String username,String password) {
for (User user : userDb) {
if (user.getUserName().equals(username)&&user.getPassword().equals(password)) {
return 1;
}
}
return 0;
}
// 判断指定的用户名在数据库中是否存在
public int isUserExist(String username) {
for(User user:userDb) {
if (user.getUserName().equals(username)) {
return 1;
}
}
return 0;
}
// 添加图书分类方法
public void addBookCategory(Long id,String categoryName,String description) {
Map<String,Object> category = new HashMap<String,Object>();
category.put("id",id);
category.put("categoryName",categoryName);
category.put("description",description);
bookCategoryDb.add(category);
}
public List<Map<String, Object>> getCategory(){
return bookCategoryDb;
}
public List<Book> getBooks(){
return books;
}
// 根据条件来查询数据信息
public List<Book> getBooksByCondition(String bookID,String bookName,String category){
List<Book> list=new ArrayList<Book>();
for(Book book:books) {
if ((book.getBookId()).equals(bookID)||(book.getBookName()).equals(bookName)||(book.getBookCategory()).equals(category)) {
list.add(book);
}
}
return list;
}
}
是我这个方法写的有错吗?
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10204 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程


恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星