それは、実装プロセスの自己定義されたビューであるので、我々は、ビューをカスタマイズする必要があります。
ここでは、例として、カスタムビューMYVIEWであります:
import java.io.PrintWriter;
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;
@Component
public class MyView implements View {
public String getContentType() {
return "text/html";
}
public void render(Map<String, ?> model, HttpServletRequest request, HttpServletResponse response)
throws Exception {
PrintWriter out = response.getWriter();
out.println("Hello View");
out.flush();
out.close();
}
}
その後、application.xmlの構成は、コンテナIOCにそれを置きます。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/view/" p:suffix=".jsp"></bean>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0"></bean>
ビュー名で、その後、コントローラに戻ります。
import java.util.Map;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class UserInfoController {
@RequestMapping("userinfo/toView.do")
public String toView(Map<String,Object> map) {
map.put("name", "Tom");
return "myView";
}
}
次の図へのWebアクセス:
その後、我々は、ソースコード(デバッグモード)を見てみましょう。
:私の以前のブログによると、要求の* .doという実行 ショー:プロセスの要求が実行されますdoDispatchの方法を、私たちは始めたこの時間はdoDispatch方法から見て:
この時のMV MV情報について、当社のマウスの実行が表示された後、情報のMVへのアクセスのコードを実行するための最初の赤いボックス:
我々は、ビューMVで取得されたモデルデータ(クラス名の最初の文字を小文字からデフォルトのカスタム・ビュー・クラス)から名前を定義し、第2の赤いボックスでコードが実行されるprocessDispatchResult方法コードは以下の通りである実行します。
赤いボックスの一部は、文が、プログラムが異常であるか否かを判定した場合、異常がない、赤い線は、その後、次のようにコードである方法を、レンダリングが行われます。
最初のコードを実行するには、赤いボックス、我々は、ビューオブジェクトを取得する必要があり、次のようにresolveViewNameは、このように行われ、メソッドのコードは次のとおりです。
ビューの解像度設定されたクラスを横断、ビューの解像度を見つけるために必要なクラス。
マウスオーバー this.viewResolvers 最初のビューは、カスタム・パーサー・クラスである;次に実行我々は、クラスコンフィギュレーションを解析我々の2つのビューを見つける resolveViewNameの方法を、図resolveViewName方法で、すなわち、第二赤線、メソッドの継承をでBeanNameViewResolverのクラス(カスタムビューを解析するクラス)として、次のとおりです。
该方法将返回获取的视图对象;于是便回到上图 render 方法的第二个红框处,我们可以看到,此时的 view 对象已是我们的自定义视图对象:
然后执行我们自定义视图的 render 方法,即我们写的方法,输出结果: