A. spring mvc 怎麼指向jsp頁面
spring mvc 指向jsp頁面的方法是利用視圖解析器。
1 UrlBasedViewResolver:它是對ViewResolver的一種簡單實現,而且繼承了AbstractCachingViewResolver,主要就是提供的一種拼接URL的方式來解析視圖,它可以讓我們通過prefix屬性指定一個指定的前綴,通過suffix屬性指定一個指定的後綴,然後把返回的邏輯視圖名稱加上指定的前綴和後綴就是指定的視圖URL了。
下面是一段UrlBasedViewResolver的定義,根據該定義,當返回的邏輯視圖名稱是test的時候,UrlBasedViewResolver將把邏輯視圖名稱加上定義好的前綴和後綴,即「/WEB-INF/test.jsp」,然後新建一個viewClass屬性指定的視圖類型予以返回,即返回一個url為「/WEB-INF/test.jsp」的InternalResourceView對象。
<bean
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="prefix" value="/WEB-INF/" /> 指定路徑
<property name="suffix" value=".jsp" /> 指定jsp為後綴
<property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/> 指定視圖轉向類
</bean>
在前端頁面編寫以下controller:
@RequestMapping("testResourceBundle")
public String testResourceBundle() {
return "test";
}
默認跳轉到/WEB-INF/test.jsp頁面,完成整個頁面交互
B. springmvc怎麼把數據返回給jsp頁面
一個是返回modelandview直接new ModelAndView("**.jsp",Map或者list),前台用el拿就行了,ajax的話,用@ResponseBody 註解版方法的返回值,public @ResponseBody Object ***()返回json格式要權配置上注入
C. springMVC中controller數據如何傳遞到JSP頁面
request.setAttribute("val", value); 頁面上${val}就取到value的值了
把數據放在一個map中,return這個map,頁內面上就容能取到這個map中的值
ajax:response.getWriter().print(value);
D. SpringMVC怎麼向前台JSP頁面傳值
SpringMVC是通過controller給jsp傳值的。
在springmvc中的controller所對應的函數中,如果需要從*.jsp頁面中獲取數據,可以自行在函數括弧中寫,springmvc會自動封裝傳過來的。
舉例:
1、Controller.java 兩種形式都可以,但是第二種,jsp頁面中的參數是personList1
//列表
@RequestMapping("/listAll")
public String listAll(Map<String,Object> model){
List<Person> personList = ps.listAll();
model.put("personList", personList);
System.out.println(" listall hello");
return "person/jPersonList";
}
//列表
@RequestMapping("/listAllOther")
public String listAllOther(Model model){
List<Person> personList1 = ps.listAll();
model.addAttribute(personList1);
System.out.println(" listallother1 hello");
return "person/jPersonList";
}
2、jsp頁面中
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<title>My JSP 'index.jsp' starting page</title>
</head>
<body>
<h2>用戶列表</h2>
<div style="padding:10px;"><a href="${pageContext.request.contextPath}/person/tocreate.action">新增</a></div>
<table border="1">
<tr>
<td>photo</td>
<td>id</td>
<td>name</td>
<td>age</td>
<td>操作</td>
</tr>
<c:forEach items="${personList}" var="p">
<tr>
<td><img src="${pageContext.request.contextPath}"/></td>
<td>${p.id}</td>
<td>${p.name}</td>
<td>${p.age}</td>
<td>
<a href="${pageContext.request.contextPath}/person/toupdate.action?id=${p.id}">修改</a>
<a href="${pageContext.request.contextPath}/person/delete.action?delId=${p.id}">刪除</a>
</td>
</tr>
</c:forEach>
</table>
</body>
</html>
E. springmvc怎麼調取jsp頁面
<!--視圖解析:對模型視圖名稱的解析,即在模型視圖名稱添加前後綴-->
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="viewClass"
value="org.springframework.web.servlet.view.JstlView"/>
<propertyname="prefix"value="/WEB-INF/jsp/"/>
<propertyname="suffix"value=".jsp"/>
</bean>
在你內的spring-mvc裡面配容置xml裡面定義的bean
F. 寫出MVC的工作原理
1.當用戶在瀏覽器中點擊一個鏈接或者提交一個表單時,那麼就會產生一個請求(request)。當請求離開瀏覽器時,它會攜帶用戶請求的信息。
2.請求的第一站到達的是Spring的DispatcherServlet,它是一個前端控制器,工作是將用戶的請求委託給其他的組件(這里是交給Spring MVC的控制器)去處理。
這里DispatcherServlet要決定將請求傳給哪一個控制器(Controller)去處理,那麼這時就需要處理器映射(Handler Mapping)了。
處理器映射會看請求的URL信息,然後決定將請求交給哪一個控制器去處理。比如說有兩個控制器ControllerA和ControllerB,分別處理後綴名為.html和.jsp送來的請求,那麼當請求者的後綴名為.html時,那麼DispatcherServlet就將請求交給ControllerA進行處理。
C代表Controller,負責用戶界面和業務邏輯層的通信控制,一方面解釋來自用戶界面的輸入,識別用戶動作(如點擊按鈕等),調用相應Model中的方法,另一方面處理來自Model的事件和返回的執行結果,調用適當的View顯示給用戶,Controller主要由Servlet完成。
M代表Model,負責整個解決方案的業務邏輯實現,底層的資料庫也由Model訪問和操作;
V代表View,負責系統向用戶的展示,主要由HTML及JSP等完成;
MVC組件說明:
以下組件通常使用框架提供實現:
DispatcherServlet:作為前端控制器,整個流程式控制制的中心,控制其它組件執行,統一調度,降低組件之間的耦合性,提高每個組件的擴展性。
HandlerMapping:通過擴展處理器映射器實現不同的映射方式,例如:配置文件方式,實現介面方式,註解方式等。
HandlAdapter:通過擴展處理器適配器,支持更多類型的處理器。
ViewResolver:通過擴展視圖解析器,支持更多類型的視圖解析,例如:jsp、freemarker、pdf、excel等。
組件:
1、前端控制器DispatcherServlet(不需要工程師開發),由框架提供
作用:接收請求,響應結果,相當於轉發器,中央處理器。有了dispatcherServlet減少了其它組件之間的耦合度。
用戶請求到達前端控制器,它就相當於mvc模式中的c,dispatcherServlet是整個流程式控制制的中心,由它調用其它組件處理用戶的請求,dispatcherServlet的存在降低了組件之間的耦合性。
2、處理器映射器HandlerMapping(不需要工程師開發),由框架提供
作用:根據請求的url查找Handler
HandlerMapping負責根據用戶請求找到Handler即處理器,springmvc提供了不同的映射器實現不同的映射方式,例如:配置文件方式,實現介面方式,註解方式等。
3、處理器適配器HandlerAdapter
作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler
通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理器進行執行。
4、處理器Handler(需要工程師開發)
注意:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器才可以去正確執行Handler
Handler 是繼DispatcherServlet前端控制器的後端控制器,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理。
由於Handler涉及到具體的用戶業務請求,所以一般情況需要工程師根據業務需求開發Handler。
5、視圖解析器View resolver(不需要工程師開發),由框架提供
作用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)
View Resolver負責將處理結果生成View視圖,View Resolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最後對View進行渲染將處理結果通過頁面展示給用戶。
springmvc框架提供了很多的View視圖類型,包括:jstlView、freemarkerView、pdfView等。
一般情況下需要通過頁面標簽或頁面模版技術將模型數據通過頁面展示給用戶,需要由工程師根據業務需求開發具體的頁面。
6、視圖View(需要工程師開發jsp...)
View是一個介面,實現類支持不同的View類型(jsp、freemarker、pdf...)