SpringMVC幾個核心類(控制器核心類,載入配置檔案核心類,處理url影射核心類,處理檢視資源核心類,方法動態呼叫核心類)
核心類
制器核心類: •org.springframework.web.servlet.DispatcherServlet - 配置web.xml 載入配置檔案核心類: •org.springframework.web.context.ContextLoaderListener – spring的配置檔案 處理url影射核心類: •org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping-根據bean的名稱請求一個bean. spring的配置檔案- /abc 處理檢視資源核心類: •org.springframework.web.servlet.view.ResourceBundleViewResolvercanSpringmvc
web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name></display-name>
<!-- 架構一個Spring,需要配置一個監聽器,配置檔案位置及名稱若想自己取,則需配置ContextConfigLocation引數 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:beans.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 架SpringMVC還需再配一個DispatcherServlet -->
<servlet>
<servlet-name>hncu</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 讀取類似struts框架的配置檔案struts.xml,該配置檔案在springmvc的預設命名規則為:servlet的名字+" -servlet.xml "
如想自己制定springmvc的配置檔案,則應進行以下配置:
-->
<init-param>
<param-name>namespace</param-name>
<param-value>hncu-servlet</param-value>
</init-param>
<!-- 專案一啟動就載入SpringMVC的分發器 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hncu</servlet-name>
<url-pattern>/sp/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
進入servlet後會讀取配置檔案hncu-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
<!-- controller 的bean 可以用id或name標識,但id不能用"/",而name可以("/hello"標明訪問路徑) -->
<bean name="/hello" class="cn.hncu.one.HelloWorldController"></bean>
<!-- 為了把前段的url請求轉換成訪問對應的bean,要配如下這個類() spring4以後則可省略-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<!-- 以轉發形式顯示的view必須配置下面這個的類以進行解析 -->
<bean class="org.springframework.web.servlet.view.ResourceBundleViewResolver">
<property name="basenames">
<list>
<value>hncu</value><!-- 資源配置檔案在classpath下:hncu.properties -->
</list>
</property>
<property name="defaultParentView" value="hncu"></property><!-- 配置預設父View -->
</bean>
<!-- 配置方法動態呼叫核心類 -->
<bean id="MethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<!-- 預設執行的方法名 -->
<property name="defaultMethodName" value="execute"></property>
<property name="paramName" value="method"></property>
</bean>
<!-- 第2個Controller,演示多方法動態呼叫核心類 -->
<bean name="/muliti" class="cn.hncu.one.MulitiMethodController">
<property name="methodNameResolver" ref="MethodResolver"></property>
</bean>
</beans>
第一個controller-----HelloWorldController.java 訪問方式:
package cn.hncu.one;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.view.RedirectView;
//springmvc中的控制器要實現Controller介面,類似struts的action要實現Action介面一樣
public class HelloWorldController implements Controller{
/* 版本1
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("Hello Contorller......");
return null;//沒有導向結果頁面
}
*/
/* 版本2導向一個重定向的結果頁面
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("Hello Contorller......RedirectView");
//讓控制器返回一個 重定向view
View view=new RedirectView("/jsps/hello.jsp",true);//引數true表示訪問時帶專案名
ModelAndView mv=new ModelAndView();//空參
mv.setView(view);
return mv;
}
*/
//版本3 導向一個轉發的結果頁面-----需要在配置檔案中載入ResourceBundleViewResolver類
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("Hello Contorller.....轉發 ");
//讓我們的控制器返回一個 轉發View
ModelAndView mv=new ModelAndView("send","name","我的大城院");//導向 send 所對應的資源檢視,並且封裝引數:name="我的大城院"
return mv;
}
}
方法動態呼叫核心類需要一個properties的配置檔案
hncu.(class)=org.springframework.web.servlet.view.JstlView
hncu.url=/jsps/hello.jsp
send.url=/jsps/one.jsp
one.url=/jsps/one.jsp
two.url=/jsps/two.jsp
three.url=/jsps/three.jsp
four.url=/jsps/four.jsp
MulitiMethodController.java
package cn.hncu.one;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
import cn.hncu.domain.User;
public class MulitiMethodController extends MultiActionController{
//反模式:這種不帶req和resp兩個引數的方法不能被訪問(要求至少要兩個引數,多個也可以)
public void one(){
System.out.println("該方法訪問不到.......");
}
public String execute(HttpServletRequest req,HttpServletResponse resp){
System.out.println("這是一個預設方法,可以被訪問到。。。。");
return "one";
}
public String two(HttpServletRequest req,HttpServletResponse resp){
System.out.println("two這個方法,可以被訪問到。。。。");
return "two";
}
public ModelAndView three(HttpServletRequest req,HttpServletResponse resp){
System.out.println("three這個方法,可以被訪問到。。。。");
String name =req.getParameter("name");
return new ModelAndView("three", "name", name);
}
//學習如何封裝複雜資料
public ModelAndView four(HttpServletRequest req,HttpServletResponse resp,User user){
System.out.println("four這個方法,可以被訪問到。。。。");
ModelAndView mv=new ModelAndView();
mv.setViewName("four");
mv.addObject(user);
return mv;
}
}
User.java值物件
package cn.hncu.domain;
public class User {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + "]";
}
}
還有幾個jsp頁面,沒有什麼內容,主要是供顯示用一下,這裡不再貼了。
相關推薦
SpringMVC幾個核心類(控制器核心類,載入配置檔案核心類,處理url影射核心類,處理檢視資源核心類,方法動態呼叫核心類)
核心類 制器核心類: •org.springframework.web.servlet.DispatcherServlet - 配置web.xml 載入配置檔案核心類: •org.springfr
【轉載】Spark學習——spark中的幾個概念的理解及參數配置
program submit man 聯眾 tail 進行 orb 數據源 work 首先是一張Spark的部署圖: 節點類型有: 1. master 節點: 常駐master進程,負責管理全部worker節點。2. worker 節點: 常駐worker進程,負責管理
springboot按profile載入配置檔案放入靜態類
import java.util.HashMap; import java.util.Map; import java.util.Properties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.spri
重寫父類方法,重寫父類方法與呼叫父類方法
class Animal: def eat(self): print("-----吃-----") def drink(self): print("-----喝-----") class Dog(Animal): def bark(self): print("-----汪汪
【Config】類庫讀取自己的配置檔案,配置檔案的擴充套件
我們在專案中一般都是使用統一的專案檔案配置,所有的配置和自定義的欄位都寫在一個web.config或者App.config檔案中。一般平時我們也沒有發現問題,確實這麼寫沒有問題,但是就是如果寫的多了就看著很臃腫。 並且假如你其他地方不是主專案的配置也寫在這裡,多了是不是很亂,有時候自己都不知道這個是
繼承:在子類構造方法中呼叫父類的構造方法
abstract class Pet { private String name; private String sex; public Pet(String name,String sex) { this.nam
類內的方法的呼叫 和 類與類之間的方法呼叫
A類 { a公開方法 { b()√ c()√ } b私有
類路徑讀取(載入)配置檔案
載入資原始檔時路徑問題 案例1: 不管是java專案還是web專案,用類路徑讀取配置檔案通用性大,移植性好。如下: InputStream in =JdbcUtil.cla
SpringMVC之一個簡單的helloworld專案(從配置資訊到請求處理)
首先:建立專案,在使用SpringMVC之前,我們照例需要先匯入springframework的jar包:除了上述的二十個jar包之外,我們還需要一個名為一個如下的jar包:如果不新增這個jar包,執行專案則會出現java.lang.NoClassDefFoundError:
idea的幾個好用快捷鍵、常用配置(包括git)、jdk和javaSE和javaEE、建立一個SE工程、debug、建立一個Web工程、打war包
幾個好用的快捷鍵 Ctrl+F12,可以顯示當前檔案的結構樹 Ctrl+H ,顯示繼承關係樹 Ctrl+E,最近的檔案 Ctrl+Alt+T,可以把程式碼包在一個塊內,例如:try/catch Alt+Insert,可以生成構造器/Getter/Setter等 Ctrl+Alt+V,可以
使用Properties類讀取專案外的配置檔案
最近公司要在一套伺服器上搭建兩個環境,為了節約成本,用到了阿里的docker,運維主管建議我們將配置檔案分離出來,基本可以結束上線即通宵的生活了。 這裡是工具類,有用到的大兄弟可以根據自己的需求改一下。 import org.apache.commons.c
子類繼承父類,重寫父類方法,運用多型時呼叫重寫的方法時呼叫子類的還是呼叫父類的?
package 第五天; public class Person { public void say() { System.out.println("我是Person的say方法"); } } 子類Student如下: package 第五天; publ
Spring通過類方法載入配置檔案
通過呼叫某個類中的方法通過流的方式獲取到配置檔案 public static Properties getRedisResourcePath(){ String filePath = Confi
Java Properties類載入配置檔案轉義問題
場景: 配置檔案config.properties 配置項cfg.regexp=\d+\t 載入配置檔案程式碼 InputStream ins = PropManager.class.getResourceAsStream("/config.prope
利用C#的反射機制動態呼叫DLL類庫
1、使用Assembly類定義和載入程式集,載入在程式集清單中列出模組,以及從此程式集中查詢型別並建立該型別的例項。 2、使用MethodInfo瞭解方法的名稱、返回型別、引數、訪問修飾符(如pulic 或private)和實現詳細資訊(如abstract或virtual)
springMVC-spring-Hibernate 開發學生管理系統簡單案例-配置檔案說明(三)
三、配置檔案說明 原始檔:https://download.csdn.net/download/flyingshadower/10628472 (1)在pom.xml寫入需要的各類依賴,自動下載依賴包。 <?xml version="1.0" encoding="UTF-8"?&g
Spring+SpringMVC重複載入配置檔案問題
sping+springmvc的框架中,IOC容器的載入過程 http://my.oschina.net/xianggao/blog/596476 基本上是先載入ContextLoaderListener,然後生成一個ioc容器。 然後再例項化DispatchServlet
Spring+SpringMVC+MyBatis深入學習及搭建(三)——MyBatis全域性配置檔案解析
MyBatis的全域性配置檔案SqlMapConfig.xml,配置內容和順序如下: properties(屬性) setting(全域性配置引數) typeAliases(類名別名) typeHandlers(類名處理器) objectFactory(物件工廠) plugins(外掛) environm
8個G記憶體 eclipse的eclipse.ini配置檔案設定
-vm D:/soft/jdk1.7.0_79/jre/bin -startup plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar --launcher.library plugins/org.ec
(四)activiti的幾個核心類
先來一張圖: 在前幾篇文章匯中已經整合好了activiti,最後我們獲取到的是activiti對外提供的7個核心服務,所有針對activiti的操作都是使用這7個核心服務來執行的。這7個服務中有些