qq_57931996 2023-10-01 18:44 采纳率: 88.9%
浏览 19

Spring MVC开发入门

spring mvc 前端页面显示不出数据

img

自己排除的问题
1.jsp页面isELIgnored设置默认是false
我的默认是true

img

2.wabapp版本过低
已经提升至4.0问题依然存在

img

3.数据未存入list
控制台输出书的id说明里面有数据

img

可能原因springmvc的配置问题个人认为

源码book.java

package cn.sjxy.chapter08.domain;

public class Book {
    private String bookId;//图书编号
    private String bookName;//图书名称
    private String author;//图书作者
    private int price;//图书价格

    public String getBookId() {
        return bookId;
    }

    public void setBookId(String bookId) {
        this.bookId = bookId;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public Book(String bookId, String bookName, String author, int price) {
        this.bookId = bookId;
        this.bookName = bookName;
        this.author = author;
        this.price = price;
    }
}


BookController.java


package cn.sjxy.chapter08.web.controller;

import cn.sjxy.chapter08.domain.Book;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Controller//使用@Controller注解标注的类是一个控制器
@RequestMapping("/book")//@RequestMapping注解用来映射对外的访问路径,该注解可以添加在类和方法上
public class BookController {
    /**
     * 功能:模拟获取库中所有图书信息,并保存在请求域中(这里保存在map中),然后请求转发到一个显示视图页面
     * @param map:Spring MVC会把保存在map中的key-value键值对自动设置到HttpServletRequest请求域中
     * @return: 返回的字符串是一个逻辑视图名称,Spring MVC会调用视图解析器把逻辑视图解析为具体的物理视图,
     * 具体的解析规则为springmvc.xml中配置的视图解析器InternalResourceViewResolver
     * <property name="prefix" value="/WEB-INF/jsp/"/>
     * <property name="suffix" value=".jsp"/>
     * 逻辑视图    ->    物理视图(prefix+逻辑视图名称+suffix)
     * shows     ->    /WEB-INF/jsp/shows.jsp
     */
    @RequestMapping("/shows")//当用户要访问该类中的此方法时,则访问路径为/book/shows
    public String showBooks(Map<String,Object> map){
        //模拟从数据库查询所有的图书信息并储存到List集合中来
        List<Book> list=new ArrayList<Book>();
        list.add(new Book("10001","Java面向对象编程","吴德",50));
        list.add(new Book("10002","基于Java技术的Web应用开发","圣文顿",45));
        list.add(new Book("10003","SSM框架整合从入门到精通","李晓明",50));
        list.add(new Book("10004","Hadoop开发与应用","应毅",55));
        list.add(new Book("10005","SpringBoot从入门到实战","李晓明",50));
        for (Book m:list){
            System.out.println(m.getBookId());
        }
        //类似于Servlet类中的request.setAttribute("books",list);
        map.put("books",list);
        //类似于Servlet类中的request.setAttribute("message","要保存的字符串信息");
        map.put("message","使用@Controller注解方式来演示SpringMVC开发环境的搭建过程");
        //返回一个逻辑视图名称
        return "shows";
    }
}

springmvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--开启类扫描的注解解析器,对cn.sjxy.chapter08及其子包下的所有类上标注的@Controller、@Service、@Repository、@Component等注进行扫描,并交给Spring容器来进行Bean对象的创建与生命周期管理-->
    <context:component-scan base-package="cn.sjxy.chapter08"/>
<!--    开启自动注册基于注解的处理器映射器和处理器适配器-->
    <mvc:annotation-driven/>
<!--    配置视图解析器,目的是把逻辑视图转换为物理视图,如本例中逻辑视图(shows)到物理视图(WEB-INF/jsp/shows.jsp)-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--        配置前缀属性prefix的值-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
<!--        配置后缀属性suffix的值-->
        <property name="suffix" value=".jsp"/>
    </bean>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>



<!--    <bean name="/shows" class="cn.sjxy.chapter08.web.controller.ShowBooksController"/>-->
<!--    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>-->
<!--    <bean class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter"/>-->
</beans>

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--  注册前端控制器DispatcherServlet,该类在spring-webmvc.jar中-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--    通过配置初始化参数来改变Spring MVC应用的核心配置文件路径及名称,如果没有配置该初始化参数,则该Spring MVC应用的核心配置文件位置必须为/WEB_INF/springmvc-servlet.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!--    表示容器在启动时立即加载该Servlet-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--  把前面注册的前端控制器映射为对外可以访问的请求路径-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--    把所有的用户请求都交给Spring MVC框架来处理配置的url-pattern为”/“,注意不要使用”/*“-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

show.jsp


<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: 26316
  Date: 2023/10/1
  Time: 16:09
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="true" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<table border="1" width="550px">
    <caption style="font-weight: bold;color: red;">${message}</caption>
    <tr>
        <th>图书编号</th>
        <th>图书名称</th>
        <th>图书作者</th>
        <th>图书价格</th>
    </tr>
    <c:forEach items="${books}" var="book">
        <tr>
            <td>${book.bookId}</td>
            <td>${book.bookName}</td>
            <td>${book.author}</td>
            <td>${book.price}</td>
        </tr>
    </c:forEach>
</table>

</body>
</html>

目录结构

img

  • 写回答

3条回答 默认 最新

  • CSDN专家-sinJack 2023-10-02 07:41
    关注

    有没有引入EL表达式相关jar包
    需要引入jstl.jar、standard.jar
    参考:
    http://t.csdnimg.cn/dJFUJ

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 10月1日
  • 创建了问题 10月1日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价