SpringMVC

本文详细介绍了SpringMVC框架的组件及其工作原理,包括DispatcherServlet、HandlerMapping、HandlerAdapter和ViewResolver等关键部分。同时,提供了环境搭建步骤,如Maven依赖、前端控制器配置、控制器类编写等,并讲解了字符编码过滤器、传参机制、视图解析器及作用域传值的多种方式。

 

SpringMVC 中重要组件


1。DispatcherServlet: 前端控制器,接收所有请求(如果配置/不包
含 jsp)
2。 HandlerMapping: 解析请求格式的.判断希望要执行哪个具体
的方法.
3。HandlerAdapter: 负责调用具体的方法.
4。ViewResovler:视图解析器.解析结果,准备跳转到具体的物理视

 

SpringMVC环境搭建

1. maven导入 jar

2. 在 web.xml 中配置前端控制器 DispatcherServlet
         如 果 不 配 置 <init-param> 会 在/WEB-INF/<servlet-name>-servlet.xml 配置

<servlet> 
<servlet-name>jqk</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
<init-param>
<param-name>contextConfigLocation</param-name>
 <param-value>classpath:springmvc.xml</param-value> 
</init-param>
<load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping>
 <servlet-name>jqk</servlet-name>
 <url-pattern>/</url-pattern> 
</servlet-mapping>

3. 在 src 下新建 springmvc.xml

       3.1 引入 xmlns:mvc 命名空间

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context.xsd 
http://www.springframework.org/schema/mvc
 http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 
<!-- 扫描注解 --> 
<context:component-scan base-package="com.bjsxt.controller"></context:component-scan>
 <!-- 注解驱动 --> 
<!-org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandler Mapping --> 
<!-org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerA dapter --> <mvc:annotation-driven></mvc:annotation-driven> 
<!-- 静态资源 --> 
<mvc:resources location="/js/" mapping="/js/**">
</mvc:resources> <mvc:resources location="/css/" mapping="/css/**">
</mvc:resources> <mvc:resources location="/images/" mapping="/images/**">
</mvc:resources> 
</beans>

4. 编写控制器类

@Controller 
public class DemoController { 
@RequestMapping("demo") 
public String demo(){ 
System.out.println("执行 demo"); 
return "main.jsp"; 
} 
@RequestMapping("demo2") 
public String demo2(){ 
System.out.println("demo2"); 
return "main1.jsp"; 
} 
}

 

字符编码过滤器
 

1.在 web.xml 中配置 Filter

<!-- 字符编码过滤器 --> 
<filter>
 <filter-name>encoding</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>encoding</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>

传参

1. 把内容写到方法(HandlerMethod)参数中,SpringMVC 只要有这个内
容,注入内容.
2. 基本数据类型参数
     2.1 默认保证参数名称和请求中传递的参数名相同 

@Controller 
public class DemoController { 
@RequestMapping("demo") 
public String demo(String name,int age){ 
System.out.println("执行 demo"+" "+name+" "+age);
return "main.jsp";
}
}

视图解析器

1. SpringMVC 会提供默认视图解析器.
2. 自定义视图解析器 

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalR esourceViewResolver">
 <property name="prefix" value="/"></property> 
<property name="suffix" value=".jsp"></property> 
</bean>

3. 如果希望不执行自定义视图解析器,在方法返回值前面添加
forward:或 redirect:

SpringMVC 作用域传值的几种方式 

1. 使用原生 Servlet
       1.1 在 HanlderMethod 参数中添加作用域对象
 

2. 在 HanlderMethod 参数中添加作用域对象
       2.1 把 map 中内容放在 request 作用域中 

       2.2spring 会对 map 集合通过 BindingAwareModelMap 进行实例

@RequestMapping("demo2") 
public String demo2(Map<String,Object> map){ 
System.out.println(map.getClass());
map.put("map","map 的值"); 
return "/index.jsp";
}

3.  使用 SpringMVC 中 Model 接口 

       3.1 把内容最终放入到 request 作用域中.

@RequestMapping("demo3")
public String demo3(Model model){
model.addAttribute("model", "model 的值"); 
return "/index.jsp";
}

4.使用 SpringMVC 中 ModelAndView 类 

@RequestMapping("demo4")
public ModelAndView demo4(){
//参数,跳转视图 ModelAndView mav = new ModelAndView("/index.jsp");
mav.addObject("mav", "mav 的值"); return mav;
}

 

注解

<context:component-scan/> 扫描指定的包中的类上的注解,常用的注解有:

@Controller 声明Action组件  
@Service    声明Service组件      @Service("myMovieLister")   
@Repository 声明Dao组件  
@Component   泛指组件, 当不好归类时.   
@RequestMapping("/menu")  请求映射  
@Resource  用于注入,( j2ee提供的 )   默认按名称装配,@Resource(name="beanName")   
@Autowired 用于注入,(srping提供的) 默认按类型装配   
@Transactional( rollbackFor={Exception.class})   事务管理
@ResponseBody  
@Scope("prototype")   设定bean的作用域  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值