今天开始学习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配置文件
5 视图解析器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>
6 映射器Mapping【什么样的请求交给Action】
- 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>
7 适配器Adapter【Action实现什么接口】
8 控制器Controller【Action继承什么类】
8.1 org.springframework.web.servlet.mvc.ParameterizableViewController
如果请求是/hello.action的请求路径,则直接跳转到/jsp/success.jsp页面,不经过程序员定义的控制器Action