重拾springmvc(一)

本文详细介绍了 SpringMVC 的非注解开发方式,包括 DispatcherServlet 的配置、核心组件 BeanNameUrlHandlerMapping、SimpleControllerHandlerAdapter 和 InternalResourceViewResolver 的使用方法,以及如何解决乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

艾玛,一直在用单位的老框架,以前学的东西都忘得差不多了,最近年末,也没啥事,用零零散散的时间慢慢把以前学的东西捡起来吧。
**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,虽然已过时,不过还是打算记录一下,万一以后公司不能用注解开发呢。。

  1. 类需要继承MultiActionController这个类
 public class MultiAction extends MultiActionController{
  1. 写自己的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值