springMVC-view


1.ViewResolver(解析成視圖對象View:jsp等)
    01.配置的試圖解析器是InternalResourceViewResolver,那么默認的View就是InternalResourceView
        <!-- 配置視圖解析器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver">
            <property name="prefix" value="/WEB-INF/view/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    02.InternalResourceView主要是顯示jsp的;InternalResourceViewResolver主要是解析在同一個web應用下通過轉發的那個結果。


2.配置國際化資源文件,並使用jstl的fmt使用國際化資源(一旦加入了jstl的jar包,View就會變成jstlView)
    01.
        <!-- 配置國家化資源文件 -->
        <bean class="org.springframework.context.support.ResourceBundleMessageSource" id="messageSource">
            <property name="basename" value="i18n"></property>(i18n.properties等放在類路徑下)
        </bean>
    02.(加入了jstl的jar包)導入fmt標簽<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
    03.使用國際化資源
        <fmt:message key="username"></fmt:message>
    
    
3.只通過配置實現轉發,不經過handler處理器(直接響應通過springMVC渲染的頁面)
    <!-- 不需要經過handler,直接轉。但如果只寫這么一句配置,之前那些經過handler的請求就是404了 -->
    <!-- 當請求為http://localhost:8080/springMVC-view/testSuccess時轉發到/WEB-INF/view/success.jsp -->
    <mvc:view-controller path="/testSuccess" view-name="success"/>
    
    <!-- 要加上下面這一句,上面的問題才能解決 -->
    <mvc:annotation-driven></mvc:annotation-driven>

4.自定義視圖解析器
    01.自定義一個類繼承View接口,並配置到IOC容器中
    02.若想使用該視圖,可以使用BeanNameViewResovler視圖解析器
        <!-- 
            配置視圖解析器,可以通過order屬性來配置解析器的優先級,值越小優先級越高,默認都是Integer.MAX_VALUE。
            BeanNameViewResolver是從IOC容器中找以目標方法返回值為名字的bean(View對象),調用其的render方法。
            若解析不成功再用優先級比它低的解析器
            每次請求都會產生一個新的view對象
         -->
        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" id="beanNameViewResolver">
            <property name="order" value="100"></property>
        </bean>
    
5.重定向
    只要在返回的字符串中寫上"redirect:/index.jsp"即可;"forward:/index.jsp"是轉發。(第一個/都代表web應用根目錄)    
    注意:一旦重定向就不能訪問WEB-INF下的頁面了,會報404。
    
        

MyView.java

package views;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.View;

//自定義視圖,繼承View。若要顯示Excel,可以繼承AbstractExcelView會比較方便
@Component
public class MyView implements View {
    //返回內容的類型
    @Override
    public String getContentType() {
        return "text/html";
    }

    //渲染視圖的過程
    @Override
    public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        response.getWriter().print(model.get("user"));
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM