想要寫一個html頁面顯示如下
Learn More →
過程卻報500錯誤
Learn More →
@Controller
@RequestMapping("/book")
public class BookController {
//controller調 service層
@Autowired
@Qualifier("BookServiceImpl")
private BookService bookService;
//查詢全部的書籍,並返回到一個書籍展示頁面
@RequestMapping("/allBook")
public String list(Model model){
List<Books> list = bookService.queryAllBook();
model.addAttribute("list",list);
return "allBook";
}
}
public interface BookService {
//增加一本書
int addBook(Books books);
//刪除一本書
int deleteBookByID(int id);
//更新一本書
int updateBook(Books books);
//查詢一本書
Books queryBookById(int id);
//查詢全部的書
List<Books> queryAllBook();
}
public class BookServiceImpl implements BookService{
//service調dao層:組合dao層
private BookMapper bookMapper;
public void setBookMapper(BookMapper bookMapper) {
this.bookMapper = bookMapper;
}
@Override
public int addBook(Books books) {
return bookMapper.addBook(books);
}
@Override
public int deleteBookByID(int id) {
return bookMapper.deleteBookByID(id);
}
@Override
public int updateBook(Books books) {
return bookMapper.updateBook(books);
}
@Override
public Books queryBookById(int id) {
return bookMapper.queryBookById(id);
}
@Override
public List<Books> queryAllBook() {
return bookMapper.queryAllBook();
}
}
從Controller層到Service層看來,程式碼應該都沒問題(因為都是直接照搬)
那問題究竟是出在哪裡?
可能資料庫使用的編碼與java程式碼不同,導致顯示錯誤
資料庫使用的類型為varchar,可能與java的detail類型不同
你看你用的資料庫軟體有沒有辦法看到使用的編碼是甚麼,可能會像是 utf8mb4_unicode_ci 這樣的,或其他的格式
先確定源頭的編碼是 unicode 還是像 big5/gb2312 這種只能用在特定編碼的環境下的
如果是 unicode 的話,你先不要顯示在 jsp 上,先直接讀出來寫檔案,看文字有沒有變亂碼,若有,那應該是讀取的時候編碼錯了,所以導致 jsp 在處理的時候出問題
是出在打錯字…
原本book類中的屬性detail,誤寫為details
導致java無法用"datails"找到資料庫的"detail"
因此造成無法顯示報500的錯誤
原因異常簡單,但卻繞一大圈遠路才找到解法
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Books {
private int bookID;
private String bookName;
private int bookCounts;
private String detail;
//这里打错了 你写的details 和数据库匹配不上
}
先在pom.xml將對應的jar包安裝 <!--文件上传--> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> <!--servlet-api导入高版本的--> <dependency> <groupId>javax.servlet</groupId>
Apr 19, 2023loginController @Controller public class loginController { @RequestMapping("/main") public String main(){ return "main"; } @RequestMapping("/goLogin")
Apr 19, 2023SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。 过滤器与拦截器的区别:拦截器是AOP思想的具体应用。 过滤器 servlet规范中的一部分,任何java web工程都可以使用 在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截 拦截器 拦截器是SpringMVC框架自己的,只有使用了SpringMVC框架的工程才能使用
Apr 18, 2023程式編寫1 login.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> <script src="${pageContext.request.contextPath}/statics/js/jquery-3.6.4.js"></script> <script>
Apr 17, 2023or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up