Spring MVC 04 - @Controller,@RequestMapping

我们承接上一篇继续解说。

在上一篇,我们在没有使用annotation的情况下,实现在浏览器打印“Hi, this is first spring mvc application”,这里我们使用@Controller和@RequestMapping实现相同的功能,在这个过程中可以对比下前后不同。

上一篇我们通过四个步骤实现

1. 修改web.xml

2. 在WEB-INF目录下增加spring-dispatcher-servlet.xml文件

3. 在src文件夹下新建HelloController.java类

4. 在WEB-INF目录下新建HelloPage.jsp页面

下面我们将一一讲解使用@Controller和RequestMapping实现的过程:

1. web.xml文件保持不变

2. spring-dispatcher-servlet.xml

修改前

<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="HandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

<bean name="/welcome" class="com.haha.HelloController"/>

<bean id="viewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="prefix">
      <value>/WEB-INF/</value>
   </property>
   <property name="suffix">
      <value>.jsp</value>
   </property>
</bean>
</beans>

修改后

<beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:context="http://www.springframework.org/schema/context"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="
         http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/spring-beans.xsd
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context.xsd">
         
<context:component-scan base-package="com.haha"/>

<bean id="viewResolver" 
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="prefix">
      <value>/WEB-INF/</value>
   </property>
   <property name="suffix">
      <value>.jsp</value>
   </property>
</bean>
</beans>

3. HelloController.java

修改前

package com.haha;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class HelloController extends AbstractController {

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
// TODO Auto-generated method stub
ModelAndView modelandview = new ModelAndView("HelloPage");
   modelandview.addObject("welcomeMessage","Hi, this is first spring mvc application");
   return modelandview;
}

}

修改后

package com.haha;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class HelloController{


@RequestMapping("/welcome")
public ModelAndView helloWorld(){
// TODO Auto-generated method stub
ModelAndView modelandview = new ModelAndView("HelloPage");
   modelandview.addObject("welcomeMessage","Hi, this is first spring mvc application");
   return modelandview;
}


}

4. HelloPage.jsp不变

通过以上修改后,启动tomcat,在浏览器输入http://localhost:8080/FirstSpringMVCPro/welcome

********************@RequestMapping进一步说明**********************

@RequestMapping()括号中的内容是DispatcherServlet查找路径的依据,如果我们在类的上方增加@RequestMapping(/xx),那么该类的所有访问都必须是.../xx/...

例如,上面的例子,我们在HelloController.java @Controller下增加@RequestMapping("/haha"),那原来http://localhost:8080/FirstSpringMVCPro/welcome能访问到的内容,必须是http://localhost:8080/FirstSpringMVCPro/haha/welcome才能访问到。

package com.haha;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;


@Controller

@RequestMapping("/haha")

public class HelloController{


@RequestMapping("/welcome")
public ModelAndView helloWorld(){
// TODO Auto-generated method stub
ModelAndView modelandview = new ModelAndView("HelloPage");
   modelandview.addObject("welcomeMessage","Hi, this is first spring mvc application");
   return modelandview;
}


}



猜你喜欢

转载自blog.csdn.net/u013537471/article/details/53009371