springMVC的配置文件路徑問題


今天在路徑問題上又迷糊了,看以前的筆記一時沒明白,所以重新編輯一下,使得思路更清晰一些。

第一:加載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

  1. @Controller
  2. @RequestMapping("/welcome")
  3. public class HelloWorldController {    
  4. @RequestMapping(value="/hello" ,method=RequestMethod.GET)  
  5. public String printWelcome(ModelMap model){   
  6. model.addAttribute("message" ,"Spring 3 MVC Hello World");  
  7.  return "hello";     }    
  8. }

舉例2:url:http://localhost:8080/demo1/home

  1. @Controller
  2. public class HomeController {
  3.  @RequestMapping("home")
  4.  public String home(){   
  5. return "home";  }
  6. }

 上面兩個小例子運行最少需要的其他代碼如下:

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>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM