今天在路徑問題上又迷糊了,看以前的筆記一時沒明白,所以重新編輯一下,使得思路更清晰一些。
第一:加載web.xml之后,讀哪個配置文件問題?即是applicationContext.xml還是xxx-servlet.xml?
解答:①在web.xml中配置DispatcherServlet時,看下面代碼紅色
<servlet>
<servlet-name>dispatch</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
</servlet>
在沒有<init-param>時,會自動尋找xxx-servlet.xml(即默認為xxx-servlet.xml,
默認路徑為/WEN-INF/xxx-servlet.xml(xxx=定義的servlet-name 即<servlet-name>dispatch</servlet-name>),)
即是:dispatch-servlet.xml
②:如果有<init-param>,就會尋找<init-param>中配置的文件,不會再找xxx-servlet.xml
第二:如果配置了<init-param>,那么applicationContext.xml文件在哪里?
解答:下面第一種方式,在/WebContent/WEB-INF/目錄下
第二種方式,在/src/目錄下
<servlet>
<servlet-name>dispatch</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>dispatch</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
</servlet>
第三:url的訪問路徑是什么?下面是兩個簡單例子
舉例1:url:http://localhost:8080/demo1/welcome/hello
- @Controller
- @RequestMapping("/welcome")
- public class HelloWorldController {
- @RequestMapping(value="/hello" ,method=RequestMethod.GET)
- public String printWelcome(ModelMap model){
- model.addAttribute("message" ,"Spring 3 MVC Hello World");
- return "hello"; }
- }
舉例2:url:http://localhost:8080/demo1/home
- @Controller
- public class HomeController {
- @RequestMapping("home")
- public String home(){
- return "home"; }
- }
上面兩個小例子運行最少需要的其他代碼如下:
1,web.xml
<servlet>
<servlet-name>dispatch</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatch</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2,dispatch-servlet.xml
<!-- 在xml配置了這個標簽后,spring可以自動去掃描base-pack下面或者子包下面的Java文件,
如果掃描到有@Component @Controller@Service等這些注解的類,則把這些類注冊為bean -->
<context:component-scan base-package="com" />
<!-- viewResolver將把邏輯視圖名解析為具體的view,通過這種策略模式,很容易更換其他視圖模式
如:InternalResourceViewResolver將邏輯視圖名解析為jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/" />
<property name="suffix" value=".jsp" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>
3,在/WEB-INF/下放兩個jsp
home.jsp
<body>hello spring!</body>
hello.jsp
<body> <h1>Message: ${message}</h1> </body>