springmvc 中返回页面后缀为html 或jsp

本文介绍如何在Spring MVC中配置多个InternalResourceViewResolver实例,实现对不同后缀(如.jsp和.html)的视图文件的支持。通过自定义HtmlResourceView类检查资源存在性,并在XML中设置两个viewResolver,分别处理.jsp和.html页面。

当项目中同时有jsp 和html页面的时候,怎么配置后缀使用

  1. 配置InternalResourceViewResolver的时候不配置后缀,controller返回的时候指定后缀
  2. 配置多个InternalResourceViewResolvers实例,设定viewClass

创建ResourceView

    public class HtmlResourceView extends InternalResourceView {
     
    	@Override  
    	public boolean checkResource(Locale locale){
    		File file=new File(this.getServletContext().getRealPath("/")+getUrl());
    		return file.exists(); //判断页面是否存在, 不存在就会走第二个InternalResourceViewResolver
    	}
    }

xml 配置多个viewResolver

   <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        <property name="viewClass" value="上面你定义的类的路径"/>
        <property name="order" value="0" />
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp" />  
        <property name="contentType" value="text/html;charset=UTF-8"></property>  
    </bean>
       <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
        <property name="viewClass" value="上面你定义的类的路径"/>
        <property name="order" value="-1" />
        <property name="prefix" value="/"/>
        <property name="suffix" value=".html" />  
        <property name="contentType" value="text/html;charset=UTF-8"></property>  
    </bean>


### Spring MVC 中使用 JSP 作为前端页面的技术实现和配置方法 要在 Spring MVC 应用程序中使用 JSP 作为前端页面,需要完成以下几个方面的配置和技术实现。 #### 1. 配置 DispatcherServlet Spring MVC 使用 `DispatcherServlet` 来处理所有的 HTTP 请求。为了使应用程序能够识别并分发请求到相应的控制器,需在 `web.xml` 文件中注册 `DispatcherServlet` 并映射 URL 路径: ```xml <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> ``` 此部分定义了 Servlet 容器加载时初始化的顺序以及它所负责的 URL 映射模式[^2]。 --- #### 2. 配置视图解析器 (InternalResourceViewResolver) 为了让 Spring MVC 正确找到对应的 JSP 页面,需要通过视图解析器指定前缀 (`prefix`) 和后缀 (`suffix`) 属性。这可以通过 XML JavaConfig 实现。 ##### XML 方式 在 Spring 的配置文件(通常是 `applicationContext.xml` `dispatcher-servlet.xml`)中添加以下内容: ```xml <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> ``` 这的 `/WEB-INF/views/` 表示 JSP 文件存储的位置,`.jsp` 则表示所有视图将以 `.jsp` 结尾。 ##### JavaConfig 方式 如果项目采用基于注解的方式,则可以在配置类中定义视图解析器 Bean: ```java @Configuration @EnableWebMvc @ComponentScan(basePackages = "com.example.controller") public class WebConfig implements WebMvcConfigurer { @Bean public InternalResourceViewResolver viewResolver() { InternalResourceViewResolver resolver = new InternalResourceViewResolver(); resolver.setPrefix("/WEB-INF/views/"); resolver.setSuffix(".jsp"); return resolver; } } ``` 这种方式更加现代化且易于维护[^3]。 --- #### 3. 创建 Controller 类 创建一个带有 `@Controller` 注解的类,并编写处理器方法来返回逻辑视图名。例如: ```java @Controller @RequestMapping("/user") public class UserController { @RequestMapping(value = "/index", method = RequestMethod.GET) public String index(Model model) { model.addAttribute("message", "Hello, SpringMVC with JSP!"); return "index"; } } ``` 在此例子中,当访问 `/user/index` 地址时,`UserController.index()` 方法会被触发,向模型中添加了一个名为 `"message"` 的属性,并返回字符串 `"index"`。根据前面配置的视图解析器规则,最终会定位到 `/WEB-INF/views/index.jsp` 页面[^1]。 --- #### 4. 编写 JSP 页面 在项目的 `src/main/webapp/WEB-INF/views/` 目录下创建 `index.jsp` 文件,内容可以如下所示: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JSP Page Example</title> </head> <body> <h1>${message}</h1> </body> </html> ``` `${message}` 是 EL 表达式语法,用于从后台传递的数据中获取值。 --- #### 5. 测试运行 部署应用至支持 JSP 的容器(如 Tomcat),启动服务后打开浏览器输入地址 `http://localhost:8080/<context-path>/user/index` 即可看到效果。 --- ### 总结 以上展示了完整的流程:从配置 `DispatcherServlet` 开始,经过视图解析器设定、控制层开发到最后展示层设计,实现了利用 JSP 技术构建动态网页的功能[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值