SpringMVC快速应用笔记分享

SpringMVC学习笔记

这篇博文依然是一篇学习笔记,干货可能只有一张图片,因为公司产品线上了新架构,用到SpringMVC,所以就在短时间内看了一下教程,时间较短没有细看底层源码所以记录的重点不多,如有错误或曲解,欢迎指正~~~

1.原理图

下面这张图已经标示了流程顺序,里面括号部分或者拟人化的节点或操作可能看起来会混淆视听,建议忽略这部分重点看英文。因为用windows自带画图软件所以不是标准的流程图样。
注意:图中“返回view”的说法是错误的,应该是view层渲染好之后直接响应到客户端,不是“返回”的概念,非“试图”是“视图”。
SpringMVC执行原理图

2.开发步骤/配置步骤

1.配置springmvc中央控制器
在web.xml中配置

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 1.读取springmvc配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/spring-applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

2.配置spring过滤器
在web.xml最前面配置

<filter>
<!-- 2.配置过滤器 -->
<filter-name>mvcFilter</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>mvcFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

3.配置处理器映射器:请参考官方文档
4.配置处理器适配器:请参考官方文档
5.配置视图解析器:请参考官方文档
6.开发controller(Action类):见第三节
7.配置action

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd">

<!-- 3.1配置处理器映射器 -->
<bean name="handlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<!-- 3.2 也可以使用另一种方式 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" >
<property name="mappings">
<props>
<prop key="/spring2.do">spring2Ctrl</prop>
</props>
</property>
</bean>
<!-- 3.3注解处理器映射器映射器
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>-->

<!-- 4.配置处理器适配器 -->
<bean name="handlerAdapter" class="org.springframework.web.portlet.mvc.SimpleControllerHandlerAdapter"/>
<!-- 4 也可以使用另一种方式 -->
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter" />
<!-- 4.3 注解处理器适配器
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> -->

<!-- 5.配置视图解析器 <bean name="/hello.do" class="SayHelloCtrl"/>-->
<bean name="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

<!-- 配置action -->
<bean name="/hello1.do" class="lxh.first.SpringCtrlFirst"/>
</beans>

在这里插入图片描述

3.控制器开发

SpringMVC提供三种方式来实现控制器
1.注解方式
注解需要扫描,要在applicationContext.xml里面配置,扫描的目的是为了通过容器帮助我们创建实例化controller对象

<context:component-scan base-package="lxh.first"></context:component-scan>

ctrl类

package lxh.first;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 使用注解的方式装载controller
*/
@Controller
public class SpringCtrlThird {

/**
* 使用注解的方式注册action方法
* @param req
* @param res
* @return
*/
@RequestMapping("/ctrlThird.do")
public ModelAndView addSpring(HttpServletRequest req, HttpServletResponse res){
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("spring","spring是春天");
modelAndView.setViewName("/spring3.jsp");
return modelAndView;
}
}

2.实现controller接口

package lxh.first;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 实现controller接口
*/
public class SpringCtrlFirst implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {

ModelAndView mv = new ModelAndView();
mv.addObject("name","My first springMVC project with IntelliJ IDEA");
mv.addObject("subject","Hello SpringMVC");
mv.setViewName("/spring1.jsp");
return mv;
}
}

3.实现org.springframework.web.HttpRequestHandler接口

package lxh.first;

import org.springframework.web.HttpRequestHandler;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class SpringCtrlSecond implements HttpRequestHandler {
@Override
public void handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
httpServletRequest.setAttribute("name","Hello VIEWHIGH");
httpServletRequest.setAttribute("subject","VH_SPRING:NO.0001");
httpServletRequest.getRequestDispatcher("spring2.jsp").forward(httpServletRequest,httpServletResponse);
}
}

4.关于ctrl交互

1.ctrl to ctrl
2.ctrl to view
3.view to ctrl

举个栗子:

@Controller
public class SpringCtrlFifth {

@RequestMapping("/addCar.do")
public String addCar(HttpServletRequest request){
String url = "/listCar.do";
request.setAttribute("name","刘小会");
return url;
}
@RequestMapping("/delCar.do")
public String delCar(HttpServletRequest request){

return null;
}
@RequestMapping("/updateCar.do")
public String updateCar(String name,Integer age){
return null;
}
@RequestMapping("/listCar.do")
public ModelAndView listCar(HttpServletRequest request){
String name = request.getAttribute("name").toString();
System.out.println(name);
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("/spring5.jsp");
modelAndView.addObject("name",name);
return modelAndView;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值