关于空格,有空格就报500错误,没有空格就不报错,这是什么原因

SQL SERVER 2008 和SQLSERVER2008,前者形式在下面代码中运行会出错,后者不报500,这是什么原因?求大神指点
Books.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



Insert title here


Book Pages

<a href="book.jsp?book=JavaWeb">JavaWeb</a><br><br>
<a href="book.jsp?book=JSP">JSP</a><br><br>
<a href="book.jsp?book=html5">html5</a><br><br>
<a href="book.jsp?book=SQLSERVER2008">SQLSERVER2008</a><br><br>
<a href="book.jsp?book=Struts2">Struts2</a><br><br>
<a href="book.jsp?book=Spring">Spring</a><br><br>
<a href="book.jsp?book=Oracle">Oracle</a><br><br>
<a href="book.jsp?book=XML">XML</a><br><br>
<a href="book.jsp?book=HTML">HTML</a><br><br>
<a href="book.jsp?book=JavaScript">JavaScript</a><br><br>
<br><br>

<%
    //显示最近浏览的五本书
    //获取所有的cookie
    Cookie[] cookies = request.getCookies();
    //从中筛选出book的cookie,如果cookieName为ATGUIGU_BOOK_开头即符合条件
    //显示CookieValue
    if(cookies != null && cookies.length > 0){
        for(Cookie c:cookies){
            String cookieName = c.getName();
            if(cookieName.startsWith("ATGUIGU_BOOK_")){
                out.println(c.getValue());
                out.println("<br>");
            }
        }
    }

%>


Book.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">



Insert title here

<h4>Book Detail Page</h4>

Book:<%=request.getParameter("book") %>
<br><br>

<a href="books.jsp">return</a>



<%
    String book = request.getParameter("book");
    //把书的信息以cookie的方式传回给浏览器,删除一个cookie
    //1.确定要被删除的一个cookie
    //前提:ATGUIGU_BOOK_开头的cookie数量大于或等于5,
    Cookie[] cookies = request.getCookies();

    //用来保存所有以ATGUIGU_BOOK_开头的BOOK的cookie信息
    List<Cookie> bookCookies = new ArrayList<Cookie>();
    //用来保存和books.jsp传入的book匹配的那个cookie
    Cookie tempCookie = null;

    if(cookies != null && cookies.length > 0){
        for(Cookie c:cookies){
            String cookieName = c.getName();
            if(cookieName.startsWith("ATGUIGU_BOOK_")){
                bookCookies.add(c);

                if(c.getValue().equals(book)){
                    tempCookie = c;
                }
            }
        }
    }
    //(1)且若从books.jsp页面传入的book不在ATGUIGU_BOOK_的cookie中则删除较早的那个cookie
    //(ATGUIGU_BOOK_数组的第一个cookie)
    if(bookCookies.size() > 5 && tempCookie == null){
        tempCookie = bookCookies.get(0);
    }
    //(2)若在其中则删除该cookie
    if(tempCookie != null){
        tempCookie.setMaxAge(0);
        response.addCookie(tempCookie);
    }
    //2.把从books.jsp页面传入的book作为一个cookie返回
    Cookie cookie = new Cookie("ATGUIGU_BOOK_" + book,book);
    response.addCookie(cookie);
%>


SQLSERVER2008是作为一个参数存在的,SQL SERVER 2008,编译器检查时不能作为参数存在,“SQL SERVER 2008”此时字符串

空格是不能乱加的,一般在引号中空格才不会报

空格会使编译器认为是另一个变量。

?book=SQLSERVER2008" 后面是参数值,在读取的时候有空格编译器会混乱,不晓得去找那个。可以format一下

未看到错误的内容,再者你的贴出的代码没看到有和数据库打交到的地方,按道理说应该和数据库无关,把具体的出错行贴上来

空格在数据库中是被认为是一个字符,所以不能乱加,如果要加,就应该用引号

在代码段前添加一个.trim()这是去空格的方法

url中的空格需要转义成20%