基于Struts2的SpringMVC入门
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入门的更多相关文章
- SpringMVC札集(03)——基于注解的SpringMVC入门完整详细示例
自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onL ...
- SpringMVC入门(基于注解方式实现)
---------------------siwuxie095 SpringMVC 入门(基于注解方式实现) SpringMVC ...
- SpringMVC入门(基于XML方式实现)
----------------------siwuxie095 SpringMVC 入门(基于 XML 方式实现) (一)搭建 SpringMVC 环境 1.先下载相关库文件,下载链接: (1)ht ...
- SpringMVC入门就这么简单
什么是SpringMVC? SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架 为什么要使用 ...
- springMVC入门(一)
1. SpringMVC入门 1.1SpringMVC是什么 Spring web mvc和Struts2都属于表现层的框架,它是Spring框架的一部分,我们可以从Spring的整体结构中看得出 ...
- SpringMVC 入门程序
SpringMVC是什么 SpringMVC 是一种基于 Java 的实现 MVC 设计模型的请求驱动类型的轻量级 Web 框架,属于 Spring FrameWork 的后续产品,已经融合在 Spr ...
- 【SpringMVC】SpringMVC 入门
SpringMVC 入门 文章源码 SpringMVC 基本概念 在 JavaEE 开发中,几乎全都是基于 B/S 架构的开发.在 B/S 架构中,系统标准的三层架构包括:表现层.业务层.持久层. 表 ...
- 【Spring】SpringMVC入门示例讲解
目录结构: // contents structure [-] SpringMVC是什么 Spring MVC的设计原理 SpringMVC入门示例 1,复制Jar包 2,Web.xml文件 3,My ...
- struts1,struts2,springMVC终极对比
最近做项目用到了struts2,之前一直是用struts1和springMVC.感觉到了struts2从很大程度上和这两个还是有很大区别的,所以今天搜集了些资料,给他们做一下对比. Struts1官方 ...
随机推荐
- iOS开发之Run Loop
1.概述 (1) Run Loop提供了一种异步执行代码的机制,不能并行执行任务. (2) 在主队列中,Main Run Loop直接配合任务的执行,负责处理UI事件.计时器,以及其它内核相关事件. ...
- IT生涯, 我的常用软件清单
IT生涯, 我的常用软件清单 SkySeraph Jan. 26th 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.skysera ...
- webots自学笔记(六)实用控制器函数补充
原创文章,来自"博客园,_阿龙clliu" http://www.cnblogs.com/clliu/,转载请注明原文章出处. 用Webots软件做机器人仿真时,可以编 ...
- 学习smart gwt 的一些好的网站
最近在学smart gwt,这个框架和我们比较熟悉的SSH实现思路上有点不一样,因为技术是外国的,所以好多东西都是英文的,正因为是英文的,我们学到的东西才是最多最好的,好了,网站如下: gwt api ...
- python操作数据库之批量导入
python操作数据库之批量导入 Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的 ...
- jQ层级选择器
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...
- 《Python自然语言处理》第一章-练习17
问题描述: 使用text9.index()查找词sunset的索引值.你需要将这个词作为一个参数插入到圆括号之间.通过尝试和出错的过程中,找到完整的句子中包含这个词的切片. 解题思路: 用两个集合,一 ...
- 转账示例(二):service层面实现(本例采用QueryRunner来执行sql语句,数据源为C3P0)
缺点:Service层面把Dao层面的开启事务操作完成了1.自行创建C3P0Uti,account数据库,导入Jar包 2.Dao层面 接口: package com.learning.dao; im ...
- You-Get , A Tiny Downloader,视频下载小工具
---恢复内容开始--- You-Get You-Get is a tiny command-line utility to download media contents (videos, a ...
- 从零到实现Shiro中Authorization和Authentication的缓存
本文大纲 一.简介 二.缓存的概念 三.自定义实现缓存机制 四.什么是Ehcache 五.Ehcache怎么用 六.Spring对缓存的支持 七.Spring+Ehcache实现 八.Spring+S ...