05_ssm基础(六)之SpringMVC
36.springMVC之入门
1.springMVC简介
Spring MVC是基于MVC模式的一个Web框架,它解决WEB开发中常见的问题(参数接收、文件上传、表单验证、国际化、等等),而且使用简单,与spring无缝集成。
目前很多公司都采用Spring MVC,招聘要求需要熟悉Spring MVC。
2.简单入门
基于MVC模式的一个Web框架,JavaWeb中所有Mvc框架都有一个特点,都具有一个核心控制器;
所有请求都经过核心控制器,然后由这个核心控制器完成公共功能(参数接收,类型转换,文件上传,文件下载);
Struts2 StrutsPrepareAndExecuteFilter (Filter)(之后会讲)
SpringMvc DispatcherServlet (Servlet)
具体完成步骤:
1.加入springmvc相关jar包
spring核心包;
com.springsource.org.apache.commons.logging-1.1.1.jar
spring-beans-3.2.0.RELEASE.jar
spring-context-3.2.0.RELEASE.jar
spring-core-3.2.0.RELEASE.jar
spring-expression-3.2.0.RELEASE.jar
springmvc核心包;
spring-web-3.2.0.RELEASE.jar spring 对web项目的支持。
spring-webmvc-3.2.0.RELEASE.jar spring mvc核心包。
2.编写springmvc中控制器(controller,handler请求处理器)
控制器实现方式:
实现Controller接口 xml配置
普通POJO; 注解配置
package com.day03.ssm.springMVC.controller; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* 课程笔记:http://www.cnblogs.com/newAndHui/category/1153640.html
* 疑问咨询wx:851298348
*/
public class HelloController implements Controller { @Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("/WEB-INF/views/Hi.jsp");
modelAndView.addObject("msg","wuji");
return modelAndView;
}
}
HelloController
3.加入springmvc的配置文件
<?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: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"> <bean id="/hi.do" class="com.day03.ssm.springMVC.controller.HelloController"> </bean>
</beans>
4.web.xml配置springmvc的核心控制器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
web.xml
5.启动web项目并访问
37.springMVC注解使用
1.在那需要被spring容器管理的bean上添加标签
//spring对不同bean,定义了不同注解;
//注解名不同,但是功能都一样,都让spring容器管理这些bean;
//如果使用了springmvc那么@Controller对应bean就是一个控制器;
//@Repository("beanName") 持久层 Dao;
//@Service("beanName") 业务层 Service;
//@Controller("beanName") 表现层 Controller
//@Component("beanName") 其他组件 otherClass
2.<!-- 配置需要管理bean对应的包(本包,子包下面都扫描),spring会扫描那些有Repository,Service,Controller,Component标签,进行管理 -->
<context:component-scan base-package="com.spring.day01.controller" />
3.使用注解方式配置控制器
@Controller(类身上) //spring需要管理这个bean,并且这个bean是一个控制器
@RequestMapping("/path") //如果在方法,执行控制器方法的请求路径;
@RequestMapping("/path") //如果写在类上面,那么就代表访问该控制器方法时,需要加的前缀;
springmvc中常用注解:
@Controller 位置:类 解释:控制器
@RequestMapping 位置:类 解释:访问该控制器中的方法,需要添加前缀, 以"/"打头;
@RequestMapping 位置:方法 解释:访问该控制器中的方法的地址, 以"/"打头;
* value : 请求路径 ;
* produces : 返回数据内容类型与@ResponseBody配合使用;
* method : 该方法值只能某些接受请求方式 ,不写就是支持所有(GET,POST);
* params : 请求该方法必须要传入参数;
@ResponseBody 位置:方法 解释:响应内容为方法的返回值;
如果返回只为void,就是没有响应内容;
如果返回是一个对象,并且加入jackson.jar,那么会自动把对象转换为json数据,进行响应
注解使用步骤:
1.必须在配置文件中开启注解
2.在控制层贴标签
完成!
05_ssm基础(六)之SpringMVC的更多相关文章
- Bootstrap<基础六> 表单
Bootstrap 通过一些简单的 HTML 标签和扩展的类即可创建出不同样式的表单. 表单布局 Bootstrap 提供了下列类型的表单布局: 垂直表单(默认) 内联表单 水平表单 垂直或基本表单 ...
- C#_02.15_基础六_.NET类
C#_02.15_基础六_.NET类 一.类继承是一个类在另一个类的基础上进行的扩展. 继承的子类拥有父类的全部成员.索引子类拥有本身的全部成员以及父类的全部成员. 可以对基类成员进行隐藏,如果必须的 ...
- {Django基础六之ORM中的锁和事务}一 锁 二 事务
Django基础六之ORM中的锁和事务 本节目录 一 锁 二 事务 一 锁 行级锁 select_for_update(nowait=False, skip_locked=False) #注意必须用在 ...
- day 71 Django基础六之ORM中的锁和事务
Django基础六之ORM中的锁和事务 本节目录 一 锁 二 事务 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 锁 行级锁 select_for_update(no ...
- day 58 Django基础六之ORM中的锁和事务
Django基础六之ORM中的锁和事务 本节目录 一 锁 二 事务 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 锁 行级锁 select_for_update( ...
- Django基础六之cookie和session
Django基础六之cookie和session 目录 Django基础六之cookie和session 1. cookie和session介绍 1.1 cookie 简介 1.2 cookie的缺陷 ...
- Springmvc入门基础(六) ---拦截器应用demo
1.拦截器定义 Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理. 2.拦截器demo demo需求: 拦截用户请求,判断用 ...
- SSM框架开发web项目系列(六) SpringMVC入门
前言 我们最初的javaSE部分学习后,基本算是入门了,也熟悉了Java的语法和一些常用API,然后再深入到数据库操作.WEB程序开发,渐渐会接触到JDBC.Servlet/Jsp之类的知识,期间可能 ...
- <Android基础> (六) 数据存储 Part 1 文件存储方式
第六章 数据存储 6.1 持久化技术 持久化技术指将内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失. 主要有三种方式用于简单地实现数据持久化功能:文件存储.S ...
随机推荐
- [java,2018-01-16] HttpClient发送、接收 json 请求
最近需要用到许多在后台发送http请求的功能,可能需要发送json和xml类型的数据. 就抽取出来写了一个帮助类: 首先判断发送的数据类型是json还是xml: import org.dom4j.Do ...
- python-异常
实例:https://www.cnblogs.com/tangpg/p/7992979.html 在系统内部,解释器使用一种被称为 ‘块栈’的结构处理异常逻辑.它和执行栈一起被栈帧管理.块栈在运行期间 ...
- Error building Player: UnityException: Bundle Identifier has not been set up correctly
错误提示: Error building Player: UnityException: Bundle Identifier has not been set up correctlyPlease s ...
- 【HQL】窗口函数
LAG LAG(col,n,DEFAULT) :与lead相反,用于统计窗口内往上第n行值.第一个参数为列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往上第n行为NULL时候, ...
- Python开发【模块】:Celery 分布式异步消息任务队列
Celery 前言: Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个 ...
- linux socket使用情况 ss -s ss -t -a | cat /proc/net/socketstat
Linux系统中,查看SOCKET使用情况可以使用ss命令. 1.命令格式:ss [参数]ss [参数] [过滤]2.命令功能:ss(Socket Statistics的缩写)命令可以用来获取 soc ...
- Android权限管理
使用系统权限 为了保护系统的完整性和用户隐私权,Android 在访问受限的沙盒中运行每款应用.如果应用需要使用其沙盒以外的资源或信息,则必须明确请求权限.根据应用请求的权限类型,系统可能会自动授予权 ...
- kubernetes组件架构
kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写.是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效( ...
- PHP中的 抽象类(abstract class)和 接口(interface)
抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类. 2 .抽 ...
- PHP 使用非对称加密算法(RSA)
解释: 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey).公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密:如果用私有密 ...