1.SpringMVC概述

(1)SpringMVC为表现层提供基础的基于MVC设计理念的优秀Web框架,

(2)SpringMVC通过一套mvc的注解,让POJO成为处理请求的控制器,而无需任何接口

(3)采用了松散耦合可插拔组件结构,比其他框架更具扩展性和灵活性

(4)Spring MVC 是一个web框架是mvc中的c,springmvc 处理请求的是控制器。

2.简单的SpringMVC程序

(1)搭建springmvc框架,配置基本夹包31个jar包,复制springmvc的入口,

(2) spring的入口是一个servlet,这个servlet被称为分发器。在web.xml写入

配置入口

<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

配置成只处理.do的文件

<servlet-mapping>
<servlet-name>SpringMVC</servlet-name>
<!-- 此处可以可以配置成*.do,对应struts的后缀习惯 -->
<url-pattern>*.do</url-pattern>
</servlet-mapping>

(3)创建SpringMVC配置文件,spring-servlet.xml

配置代码

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> </beans>

处理器所在包

<context:component-scan base-package="com.haina"/>

视图解析器

   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" ></property>
<property name="suffix" value=".jsp" ></property>
</bean>

配置拦截器

<mvc:interceptors>
<!-- 这个拦截器会拦截所有请求 -->
<bean id="id" class="com.haina.mvc2.controller.FirstIntercepter"></bean>
<!-- 拦截包含ma的所有 -->
<mvc:interceptor>
<mvc:mapping path="/ma/*"/>
<bean id="second" class="com.haina.mvc2.controller.SecondIntercepter"></bean>
</mvc:interceptor>
<mvc:interceptor>
<!-- 包括所有 -->
<mvc:mapping path="/*/*"/>
<!-- 不包括mv下的所有 -->
<mvc:exclude-mapping path="/mv/*"/>
<bean id="third" class="com.haina.mvc2.controller.ThirdIntercepter"></bean>
</mvc:interceptor>
</mvc:interceptors>

(4)创建控制器

创建一个com.haina.controller包

新建一个Controller类

添加@Controller注解。这个类就变成了一个处理器

package com.haina.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; @Controller
@RequestMapping("/user")                //相当于struts2中的namespace
public class UserController {
                            
@RequestMapping("/helloword")            //相当于action的name属性值
                            //此时的这个helloword这个方法处理的请求是
                            //http://localhost:8080/项目名/user/helloword.do
public String helloword(){
//spring开发需要写的代码和jsp,不用配类似于struts.xml的配置文件
//返回webContent 下面的hello.jsp给用户,其中的/表示webConen
//jsp需要保存的web-INF下,通过代码访问,这样浏览器就没有办法直接访问
System.out.println("123");
return "hello";   } }

在web-INF下新建一个hello.jsp文件即可显示登陆成功

3.SpringMVC常用注解详解

(1)@PathVariable:通过@PathVariable可以将URL中的占位符参数绑定到控制器处理方法的入参中:

  URL中的{XXX}占位符可以通过@PathVariable("xxx")绑定到操作方法中

//http://localhost:8080/mvc2/mvc2/pathTest/1/19/ruanjian
@RequestMapping("/pathTest/{id}/{age}/{classes}")
public String pathTest(@PathVariable(value="id")int id,
@PathVariable(value="age")int age,@PathVariable(value="classes")
String classes1)
{
System.out.println(classes1);
System.out.println(id);
System.out.println(age);
return "success"; }

(2)希望在多个请求之间共用某个模型属性数据用@SessionAttributes,

//把模型中的user1,user2和所有Users对象session中
@SessionAttributes(types={User.class},value={"user1","user2"})
public class SessionTestController {
@RequestMapping("/s1")
public ModelAndView test(HttpSession session)//这个session对象直接用
{
//ModelAndView模型和视图,可以new,“success”只是视图的名字
//视图就是jsp的名字
ModelAndView mv=new ModelAndView("success");
Object o=session.getAttribute("user1");
System.out.println(o);
o=session.getAttribute("user2");
System.out.println(o);
o = session.getAttribute("s");
System.out.println(o);
o = session.getAttribute("s1");
System.out.println(o);
if(o==null){
//同包下不需要导包,java.long下不需要导报。
System.out.println("第一次请求s1此时没有session值,为null");
Users user =new Users(1,"gll","123");
mv.addObject("user1",user);//自动绑定到session中,key为user
mv.addObject("user2",user);
mv.addObject("s",user);
mv.addObject("s1",user);//把对象加入模型,模型中的数据都是key = value形式
}else{
System.out.println("第二次请求s1,此时session中有值"+session.getAttribute("s"));
System.out.println("用户信息"+session.getAttribute("user"));
}
return mv; }

(3)@CookieValue:从客户端获取值,只能用在方法上

@RequestMapping("/c1")
public String testCookie(@CookieValue(value="username",required=false)String name,HttpServletResponse reponse)
{
if(name==null){
System.out.println("cookie为空");
Cookie cookie=new Cookie("username","gll");
cookie.setMaxAge(14*24*60*60);
reponse.addCookie(cookie);
}else{
System.out.println("从客户端获取cookie值"+name);
} return "hello"; }

4.SpringMVC处理模型数据

(1)ModelAndView:处理方法返回值类型为ModelAndView时方法体即可通过该对象添加数据。

    @RequestMapping("/mv1")
public ModelAndView test1(){
ModelAndView mv=new ModelAndView("testview");//指定视图名字
mv.addObject("mvname","mvvale");
mv.setViewName("testview");
return mv;
}

(2)Map及Model:处理方法返回时,Map中的数据会自动添加到模型中

//如果返回值是String,就必须入参是ModelMap,不能new ModelMap
@RequestMapping("/mv2")
public String test2(ModelMap mm){
mm.addAttribute("mmname","mmvalue");
return "testview";
}

(3)@SessionAttribute:将模型中的某个属性暂存到HttpSession中,以便多个请求可以共享这个属性

@SessionAttributes(types={User.class},value={"user1","user2"})
public class SessionTestController {
@RequestMapping("/s1")
public ModelAndView test(HttpSession session)//这个session对象直接用
{
//ModelAndView模型和视图,可以new,“success”只是视图的名字
//视图就是jsp的名字
ModelAndView mv=new ModelAndView("success");
Object o=session.getAttribute("user1");
System.out.println(o);
o=session.getAttribute("user2");
System.out.println(o);
o = session.getAttribute("s");
System.out.println(o);
o = session.getAttribute("s1");
System.out.println(o);
if(o==null){
//同包下不需要导包,java.long下不需要导报。
System.out.println("第一次请求s1此时没有session值,为null");
Users user =new Users(1,"gll","123");
mv.addObject("user1",user);//自动绑定到session中,key为user
mv.addObject("user2",user);
mv.addObject("s",user);
mv.addObject("s1",user);//把对象加入模型,模型中的数据都是key = value形式
}else{
System.out.println("第二次请求s1,此时session中有值"+session.getAttribute("s"));
System.out.println("用户信息"+session.getAttribute("user"));
}
return mv; }

(4)@ModelAttribute:方法入参标注该注解后,入参的对象就会放到数据模型

@ModelAttribute("user")
//map.put("user",u )
public Users getUser(@RequestParam(value="id",required=false) Integer id,Model model){
System.out.println("我是一个加了@ModelAttribute方法");
Users u=null;
model.addAttribute("id",0);
if(id==null){
model.addAttribute("id",0);
u=new Users(1,"gll","123");
}
else{
u=new Users();
}
return u;
}

基于Struts2的SpringMVC入门的更多相关文章

  1. SpringMVC札集(03)——基于注解的SpringMVC入门完整详细示例

    自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...

  2. SpringMVC入门(基于注解方式实现)

    ---------------------siwuxie095                             SpringMVC 入门(基于注解方式实现)         SpringMVC ...

  3. SpringMVC入门(基于XML方式实现)

    ----------------------siwuxie095 SpringMVC 入门(基于 XML 方式实现) (一)搭建 SpringMVC 环境 1.先下载相关库文件,下载链接: (1)ht ...

  4. SpringMVC入门就这么简单

    什么是SpringMVC? SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架 为什么要使用 ...

  5. springMVC入门(一)

    1.   SpringMVC入门 1.1SpringMVC是什么 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出 ...

  6. SpringMVC 入门程序

    SpringMVC是什么 SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 Spring FrameWork 的后续产品,已经融合在 Spr ...

  7. 【SpringMVC】SpringMVC 入门

    SpringMVC 入门 文章源码 SpringMVC 基本概念 在 JavaEE 开发中,几乎全都是基于 B/S 架构的开发.在 B/S 架构中,系统标准的三层架构包括:表现层.业务层.持久层. 表 ...

  8. 【Spring】SpringMVC入门示例讲解

    目录结构: // contents structure [-] SpringMVC是什么 Spring MVC的设计原理 SpringMVC入门示例 1,复制Jar包 2,Web.xml文件 3,My ...

  9. struts1,struts2,springMVC终极对比

    最近做项目用到了struts2,之前一直是用struts1和springMVC.感觉到了struts2从很大程度上和这两个还是有很大区别的,所以今天搜集了些资料,给他们做一下对比. Struts1官方 ...

随机推荐

  1. Altera Stratix IV Overview

    由于要开发基于DE4平台的应用,应该要了解一下该平台的芯片情况Stratix IV 具体型号为:Stratix IV EP4SGX230KF40C2 命名规范如下 官网资料为:https://www. ...

  2. 给 Virtualbox 中 Ubuntu 系统设置静态 IP ,让 DNS 配置信息不会在重启后被清除

    虚拟机网络选择 桥接网卡 模式. 主要涉及两个步骤: 1. 修改 /etc/network/interfaces 文件: 2. 修改 dns : 第一步,修改 interfaces 文件: sudo ...

  3. HTML 表单常用的代码元素

    表单: 将数据通过浏览器提交到服务器的媒介.<form action="" method="get/post" ></form> get ...

  4. iOS开发之UICollectionViewController

    1.概述 UICollectionView控件主要是用来做九宫格的,类似于android中的GridView控件.其用法与UITableView一样,首先要使控制器遵守数据源协议,再将控制器设置为UI ...

  5. Linux下文件误删除恢复案例

    说明:将/etc/profile文件删除,然后恢复 在linux中为什么讲文件删除还能恢复呢? 详见:文件删除原理 http://blog.csdn.net/grantlee1988/article/ ...

  6. spring(一) IOC讲解

    spring基本就两个核心内容,IOC和AOP.把这两个学会了基本上就会用了. --WH 一.什么是IOC? IOC:控制反转,通俗点讲,将对象的创建权交给spring,我们需要new对象,则由spr ...

  7. 维护Study

    ##老师发了一个study来让我们纠错维护,整个软件是日程管理系统,分为欢迎界面,登录 注册界面,提醒界面添加日程界面,还有个人中心等.一些主要代码老师让我们把缺失部分去维护.首先我们读一下主要代码# ...

  8. XJOI1424解压字符串

    解压字符串 给你一个字符串S,S是已经被加密过的字符串.现在要求你把字符串S还原.字符串S可能会出现这样的格式:k(q),它表示字符串q重复了k次,其中q是0个或多个字符,而k是一个数字,范围是0至9 ...

  9. 【转】PV3D的小练习~太阳系八大行星

    转自:http://hi.baidu.com/boycy/item/70d1ba53bc8c3a958c12eddf http://www.cnblogs.com/flash3d/archive/20 ...

  10. 测试开发Python培训:自动发布新浪微博-技术篇

    测试开发Python培训:自动发布新浪微博-技术篇   在前面我们教大家如何登陆,大家需要先看自动登陆新浪微博(http://www.cnblogs.com/laoli0201/articles/48 ...