艾玛,一直在用单位的老框架,以前学的东西都忘得差不多了,最近年末,也没啥事,用零零散散的时间慢慢把以前学的东西捡起来吧。
**springmvc的基本工作流程**
emmm,其实这里主要记住dispatchServlet,handlerMapping,handlerAdapter,viewResolver,这几个接口名就好,因为配置springMVC的时候输入他们根据情况选择实现类就好
web.xml配置
配置一个servlet:(输入DispatchServlet可自动补全,另外记住一个快捷键ctrl+shfit+t可以查找类)
另外,这里可以看出并没有传入配置文件的路径,因为springMvc会默认读取web—inf下为dispatch-servlet.xml这个配置文件。如果想要指定路径下的配置文件请参考如下设置:
<init-param>
<param-name>contextConfigLoction</param-name>
<param-value>classPath:dispatcher-servlet.xml</param-value>
</init-param>
先配置一下最最最常用的非注解开发的springMvc基本三项吧
BeanNameUrlHandlerMapping,SimpleControllerHandlerAdapter,
InternalResourceViewResolver,如我之前所说的只需要记住接口名然后搜索实现类就好。
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/tpls/test/"></property>
<property name="suffix" value="/html"></property>
</bean>
这里的基本三项就是根据bean的name属性去寻找controller,然后单纯的执行,然后再返回一个视图字符串,和prefix,suffix组合形成完整路径。下面还有其他几种mapping,适配器,视图解析器,想明白自己百度吧 哈哈。
SimpleUrlHandlerMaping
功能:寻找Controller
根据浏览器url匹配简单url的key,key又Controller的id找到Controller
ControllerClassNameHandlerMapping
功能:寻找Controller
根据类名(MyController)类名.do来访问,类名首字母小写
HttpRequestHandlerAdapter
功能:执行controller,接近servlet开发
关于springmvc封装mvc参数,一图流
乱码问题
get乱码需要配置服务器
post乱码配一个filter就好
<filter>
<filter-name>springCharect</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>springCharect</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
另外还有个日期格式的字符串转日期对象的方法:
@InitBinder
private void transDate(WebDataBinder webDataBinder){
webDataBinder.registerCustomEditor(Date.class,new CustomDateEditor(new SimpleDateFormat("yyyy-MM-DD"),true));
}
}
emmm就这样,先睡吧,喝杯红酒助眠,明天学习注解开发哟
突然想起有个忘掉的东西。类似于servlet上面所讲的实现controller接口的形式一个controller只能有一个action,这在实际开发过程中显然是不太理想的,所以针对于这个情况又去网上找了一下非注解形式的一个controller配置多个action,虽然已过时,不过还是打算记录一下,万一以后公司不能用注解开发呢。。
- 类需要继承MultiActionController这个类
public class MultiAction extends MultiActionController{
- 写自己的action方法,需要有httpServletRequest和httpServletResponse这两个参数
public ModelAndView save(HttpServletRequest request, HttpServletResponse response)
3.配置参数方法名解析器
<bean id ="parameterMethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="method"></property>
</bean>
4.配置多action的controller类
<bean name="/mutiAction" class="com.lei.test.action.MultiAction">
<property name="methodNameResolver">
<ref bean="parameterMethodNameResolver"></ref>
</property>
</bean>
ps:示例访问链接 ../mutiAction?method=save