基于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官方 ...
随机推荐
- mybatis与spring整合时读取properties问题的解决
在学习mybatis与spring整合是,想从外部引用一个db.properties数据库配置文件,在配置文件中使用占位符进行引用,如下: <context:property-placehold ...
- Gson和Json
一下内容为复制别人的: Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. j ...
- PN结加正向偏置电压 其空间电荷区为何变窄
理论基础:导体是内部具有较多可以自由移动的电荷的物体. 绝缘体是内部没有或者有很少可以自由移动的电荷的物体. +代表空穴带正电 -代表电子带负电 两竖线之间表示无自由移动电子或空穴部分,相当于绝缘体 ...
- 大数据时代日志分析平台ELK的搭建
A,首先说说ELK是啥, ELK是ElasticSearch . Logstash 和 Kiabana 三个开源工具组成.Logstash是数据源,ElasticSearch是分析数据的,Kiaba ...
- python学习随笔(三)
在linux中输入密码,我们是看不到的,如果在python中直接输入是可以看的到的,执行以下程序 #!/usr/bin/env python username = raw_input("us ...
- WebStorm里使用注意点
归纳一些我在使用webstorm里遇到的问题: 1.问题:文件出现红线,如图 解决方案:可能是由于语言版本的问题,改一下版本试试 2.快捷键:http://www.cnblogs.com/yeming ...
- [深入学习Redis]RedisAPI的原子性分析
在学习Redis的常用操作时,经常看到介绍说,Redis的set.get以及hset等等命令的执行都是原子性的,但是令自己百思不得其解的是,为什么这些操作是原子性的? 原子性 原子性是数据库的事务中的 ...
- 老李回答:JAVA程序的性能测试方法
Java 1.5以上都在虚拟机里内建了程序性能跟踪的功能,并提供了Java Profiling API,简称JPA,你可以搜索'java profiling'.Java也提供了简单的性能性能跟踪工具J ...
- 老李分享:为何要使用 Web Services
老李分享:为何要使用 Web Services poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询q ...
- 1.Maven的安装及配置
1 Maven 介绍 Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”.本书将介绍Maven这一跨平台的项目管理工具.作为Apache组织中的一个颇为成功的开源项目,Maven ...