SpringMVC学习-day01基础知识

 今天开始学习springmvc,记录自己的学习过程

0 工作流程

1springMVC简单事例

   a 配置springmvc核心控制器

//配置完成后,会去找WEB-INF/<servlet-name>-servlet.xml配置文件
  <servlet>
  		<servlet-name>DispatcherServlet</servlet-name>
  		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  		<servlet-name>DispatcherServlet</servlet-name>
  		<url-pattern>*.action</url-pattern>
  </servlet-mapping>

2  配置文件

 <!-- 控制器  name表示请求路径,class表示处理类-->
      <bean name="/hello.action" class="app1.HelloAction"/>	
      <!-- 映射器(可省) 将控制器name属性值作为请求的url-->
      <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
      <!-- 适配器(可省)  找实现了Controller接口的后端控制器-->
      <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
      <!-- 视图解析器(如果modelandView中封装的视图名是真实路径 可省) 通过modelandView中封装的视图名找到真正的页面 -->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>

3 Action处理类

public class HelloAction implements Controller {
	

	public HelloAction() {
		System.out.println("HelloAction()+"+this.hashCode());
	}

	@Override
	public ModelAndView handleRequest(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		ModelAndView modelandView=new ModelAndView();
		modelandView.addObject("message", "第一个springmvc程序");
        //此处是真实路径
		modelandView.setViewName("/WEB-INF/success.jsp");
		return modelandView;
	}
		
}

4 加载自定义目录下的springmvc.xml配置文件

视图解析器InternalResourceViewResolver【解析视图逻辑名对应的真实路径】【如果ModelandView封装的是视图的真实名称,视图解析器配置可省】 

 <!-- 视图解析器(如果modelandView中封装的视图名是真实路径 可省
      逻辑名称就一定要配置) 通过modelandView中封装的视图名找到真正的页面 -->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      		<!-- 视图前缀+视图逻辑名称+视图后缀=真实访问路径 -->
      		<!-- 视图前缀 -->
      		<property name="prefix" value="/WEB-INF/"></property>
      		<!-- 视图后缀 -->
      		<property name="suffix" value=".jsp"></property>
      </bean>

映射器Mapping【什么样的请求交给Action】

  1. org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping(核心)

          将程序员定义的Action所对应的<bean>标签的name属性作为请求路径

 <!-- 映射器(可省) 将控制器name属性值作为请求的url-->
      <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> 
     
     

   2  org.springframework.web.servlet.handler.SimpleUrlHandlerMapping

/delete.action和/update.action和/find.action请求路径都交由<bean>标签为id的Action,即

多个路径对应同一个Action

 <!-- 控制器  name表示请求路径,class表示处理类-->
      <bean name="/add.action" class="app2.UserAction"/>
      
      <bean id="userActionID" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter">
      		<property name="mappings">
      			<props>
      				<prop key="/delete.action">userActionID</prop>
      				<prop key="/find.action">userActionID</prop>
      				<prop key="/update.action">userActionID</prop>
      			</props>
      		</property>
      </bean>

适配器Adapter【Action实现什么接口】

控制器Controller【Action继承什么类】

   8.1 org.springframework.web.servlet.mvc.ParameterizableViewController

如果请求是/hello.action的请求路径,则直接跳转到/jsp/success.jsp页面,不经过程序员定义的控制器Action

   

 

  

猜你喜欢

转载自blog.csdn.net/liyunfei456/article/details/88256994