SpringMVC知識點(diǎn)總結

時(shí)間:2022-06-25 10:17:42 總結范文 我要投稿
  • 相關(guān)推薦

SpringMVC知識點(diǎn)總結

  篇一:springmvc簡(jiǎn)單總結

  一:springmvc的簡(jiǎn)單了解

SpringMVC知識點(diǎn)總結

  1. .Springmvc是spring的web框架?chē)@DispatcherServlet設計的。DispatchServlet的作用是將請求分發(fā)到不同的處理器。Spring的web框架可以包括可配置的處理器(Handlder)映射,視圖(view)解析,本地化(local)解析,主題(theme)解析以及對文件上傳的支持等

  2. springmvc的請求模式:

  3. 其實(shí),每個(gè)MVC 框架的執行過(guò)程都是大同小異的;

 、佼斠粋(gè)request過(guò)來(lái)時(shí),它通過(guò)一個(gè)servelet來(lái)響應request;

 、谠俑鶕䌷equest的路徑名和配置將這個(gè)request dispatch 給一個(gè)controller執行;

 、圩詈髮⒅祷嘏渲梦募飳捻(yè)面。

  在springmvc中,這個(gè)servelet的名字叫:Dispatchservlet。

  4. Spring

  的Controller是singleton的.,或者是線(xiàn)程不安全的說(shuō)明。

  分析:和Struts一樣,Spring的Controller是singleton的!這意味著(zhù)每個(gè)request過(guò)來(lái),系統都會(huì )用原來(lái)的instance去處理,這樣就導致了兩個(gè)結果:①我們不用每次創(chuàng )建Controller,減少了對象創(chuàng )建和垃圾回收的時(shí)間。②由于只有一個(gè)Controller的instance,當多個(gè)線(xiàn)程調用它的時(shí)候,它里面的instance變量不是線(xiàn)程安全的。

  這也是webworks吹噓的地方,它的每個(gè)Action都是線(xiàn)程安全的。因為每過(guò)來(lái)一個(gè)request,它就會(huì )創(chuàng )建一個(gè)Action對象。由于現代JDK垃圾收集動(dòng)能的效率已經(jīng)不成問(wèn)題了,所以這種創(chuàng )建完一個(gè)對象就扔掉的模式也得到很多人的認可。

  二:簡(jiǎn)單的配置了解

  1.導入需要的jar包

  【去網(wǎng)上搜一下】

  2.配置web.xml

  3.配置springmvc-servlet.xml

  說(shuō)明,可以放在WEB-INF下面就行。有些配置是暫時(shí)不需要的,一并拷貝過(guò)來(lái)了。

  4.在WebRoot下面建立一個(gè)文件夾static用于放靜態(tài)的文件,

  static下面再建立三個(gè)靜態(tài)文件夾:images[用于放圖片],script[用于放js文件],style[用于放css文件]。

  5.在WEB-INF下面建立一個(gè)文件夾views,用于放jsp文件。

  可以先建立一個(gè)工程引用的jsp文件,base.jsp。

  三:基本功能的學(xué)習

  建立一個(gè)index.jsp,引入base.jsp → <%@ include="" file="base.jsp">

  1.簡(jiǎn)單的請求

  注意事項:

 、偌t色部分的@Controller ,

 、趯τ诠驳腢RL,我們可以注釋到類(lèi)的頭部,比如對于user對象的操作,。

  我們可以再action的頭部注釋?zhuān)篅RequestMapping("/user")。

 、蹖τ谀承┱埱笪覀兛梢韵拗铺峤环绞,比如用戶(hù)登錄,我們只允許POST提交,

  我們可以在方法上面加上:@RequestMapping("/login",method=RequestMethod.POST)。

  篇二:SpringMVC知識點(diǎn)總結

  Spring web mvc和Struts2都屬于表現層的框架,它是Spring框架的一部分,是一個(gè)前端web框架。

  springMVC的處理流程

  Controller跳轉到另一個(gè)Controller

  1. 需求背景 需求:spring MVC框架controller間跳轉,需重定向。有幾種情況:不帶參數跳轉,帶參數拼接url形式跳轉,帶參數不拼接參數跳轉,頁(yè)面也能顯示。

  2. 解決辦法 需求有了肯定是解決辦法了,一一解決,說(shuō)明下spring的跳轉方式很多很多,我這里只是說(shuō)一些自我認為好用的,常用的,spring分裝的一些類(lèi)和方法。

  不帶參數的跳轉

 。1)我在后臺一個(gè)controller跳轉到另一個(gè)controller,為什么有這種需求呢,是這樣的。我有一個(gè)列表頁(yè)面,然后我會(huì )進(jìn)行新增操作,新增在后臺完成之后我要跳轉到列表頁(yè)面,不需要傳遞參數,列表頁(yè)面默認查詢(xún)所有的'。

  方式一:使用ModelAndView

  return new ModelAndView("redirect:/toList"); 這樣可以重定向到toList這個(gè)方法。

  方式二:返回String

  return "redirect:/ toList ";

  其它方式:

  其它方式還有很多,這里不再做介紹了,比如說(shuō)response等等。這是不帶參數的重定向。

  帶參數拼接url的跳轉

  第二種情況,列表頁(yè)面有查詢(xún)條件,跳轉后我的查詢(xún)條件不能丟掉,這樣就需要帶參數的了,帶參數可以拼接url

  方式一:自己手動(dòng)拼接url

  new ModelAndView("redirect:/toList?param1="+value1+"m2="+value2); 這樣有個(gè)弊端,就是傳中文可能會(huì )有亂碼問(wèn)題。

  方式二:用RedirectAttributes,

  這個(gè)是發(fā)現的一個(gè)比較好用的一個(gè)類(lèi) 這里用它的addAttribute方法,這個(gè)實(shí)際上重定向過(guò)去以后你看url,是它自動(dòng)給你拼了你的url。這種方式就相當于重定向之后,在url后面拼接參數,這樣在重定向之后的頁(yè)面或者控制器再去獲取url后面的參數就可以了,但這個(gè)方式因為是在url后面添加參數的方式,所以暴露了參數,有風(fēng)險。

  使用方法:attr.addAttribute("param", value);

  return "redirect:/namespace/toController";

  這樣在toController這個(gè)方法中就可以通過(guò)獲得參數的方式獲得這個(gè)參數,再傳遞到頁(yè)面。過(guò)去的url還是和方式一一樣的。

  帶參數不拼接參數跳轉

  帶參數不拼接url頁(yè)面也能拿到值(重點(diǎn)是這個(gè))一般我估計重定向到都想用這種方式:

  @RequestMapping("/save") public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr)throws Exception { String code = service.save(form); if(code.equals("000")){

  attr.addFlashAttribute("name", form.getName()); 這種方式也能達到重新向帶參, 而且能隱藏參數,其原理就是放到session中,session在跳到頁(yè)面后馬上移除對象。所以你刷新一下后這個(gè)值就會(huì )丟掉

  attr.addFlashAttribute("success", "添加成功!"); return "redirect:/index";}else{

  attr.addAttribute("projectName", form.getProjectName()); attr.addAttribute("enviroment", form.getEnviroment());attr.addFlashAttribute("msg", "添加出錯!錯誤碼為:

  "+rsp.getCode().getCode()+",錯誤為:"+rsp.getCode().getName());return "redirect:/maintenance/toAddConfigCenter"; }}

  @RequestMapping("/index")

  Public String save(@ModelAttribute("form") Bean form,RedirectAttributes attr) throws Exception {

  return "redirect:/main/list";}

  頁(yè)面取值直接用el表達式就能獲得到(例如:${projectName }),這里的原理是放到session中,session在跳到頁(yè)面后馬上移除對象。所以你刷新一下后這個(gè)值就會(huì )丟掉。${projectName }的值,這要想用在js中必須先放在頁(yè)面的。

<script type="text/javascript">

  Var projectName= ${projectName};</script>

【SpringMVC知識點(diǎn)總結】相關(guān)文章:

英語(yǔ)知識點(diǎn)總結06-23

橢圓知識點(diǎn)總結06-24

高考知識點(diǎn)總結07-02

高考知識點(diǎn)總結08-19

物理知識點(diǎn)總結11-19

口腔知識點(diǎn)總結11-16

生物知識點(diǎn)總結12-02

中考知識點(diǎn)總結11-22

浮力知識點(diǎn)總結12-28

語(yǔ)文知識點(diǎn)總結04-17

99久久精品免费看国产一区二区三区|baoyu135国产精品t|40分钟97精品国产最大网站|久久综合丝袜日本网|欧美videosdesexo肥婆