在随笔“springMVC项目配置文件”的基础上,进行优化,使用注解配置,控制器类得以简化:

一、注解配置springMVC

1、在HelloController类中,去除实现的Controller接口,并给方法HandlerRequest添加注解@RequestMapping:

  @Controller

  public Class HelloController{

    @RequestMapping("/hello")

    public ModelAndView HandlerRequest(HttpServletRequest x1,HttpServletResponse x2)    {       }

  }

  //其中,@Controller注解是用来声明控制器的

  //@RequestMapping注解表示/hello路径会映射到该方法上

  //另,若@RequestMapping注解作用在类上,则相当于给该类所有配置的映射地址前加上了一个地址

2、在dispatcher-servlet.xml 文件中,注释掉原来的映射设置:包括路径映射与控制器类的bean

重新增加一个组件扫描:  <context : component-scan base-package = "controller" />     //扫描controller包下的控制器类

二、配置视图解析器

  在WEB-INF 下建page文件夹,WEB-INF是javaweb默认的安全目录,不允许用户直接访问

1、在dispatcher-servlet.xml中,添加一个bean,告知视图解析器:

  <bean  id = "viewResolver" class = "org.springframework.web.servlet.view.InternalResourceViewResolver">

    <property name = "prefix" value = "/WEB-INF/page" />

    <property name = "subfix" value = ".jsp" />

  </bean>

  //配置springMVC内置的视图解析器InternalResourceViewResolver,在视图名上添加前缀后缀进而确定一个web应用中视图资源的物理路径

2、在HelloController中把方法HandlerRequest的方法体内容改为ModelAndView model = new ModelAndView(viewName:"index");

3、把原index.jsp文件剪切到WEB-INF 下page文件夹中

4、访问路径localhost/hello   则可以显示内容页了,实际路径是/WEB-INF/page/index.jsp

三、控制器接收请求数据

<form action = "/param" role = "form">

  用户名:<input type = "text"  name = "username"><br/>

  <input type = "submit" value = "提交">

</form>

servlet 原生ApI实现接收请求数据:

1、@RequestMapping("/param")

  public ModelAndView getparam(HttpServletRequest req, HttpServletResponse  resp){

    String username = req.getParameter("username");

    sysout(username);

    return null;

  }   //获取表单提交的用户名

2、同名匹配规则,把方法入参名设成与前台传参名一致,也可获取到表单提交的数据:

@RequestMapping("/param")

public ModelAndView getparam(String username){

    sysout(username);

    return null;

  }

//问题是,与前台强耦合

解决方法是用@RequestParam(“前台参数名”)来注入:

3、@RequestMapping("/param")

public ModelAndView getparam(@RequestParam("username")  String u){

    sysout(u);

    return null;

  } //同样获取到表单提交的数据

另,使用模型传参:前台参数名必须与模型字段名一致:

public Class  User{   String username;   //getter、setter方法}

public ModelAndView getparam(User user){

  sysout(user.getUsername);

  return null;

}

解决post方式的中文乱码问题: 通过在web.xml中添加springmvc字符编码过滤器:

<filter>

  <filter-name> CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>

  <url-pattern>  /*  </url-pattern>

</filter-mapping>

//<filter><filter-mapping>要成对配置

四、控制器回显数据

/WEB-INF/page下创建test.jsp页面

<!Doctype html>

<%@page language = "java" contentType = "text/html;charset = UTF-8" pageEncoding = "UTF-8" import="java.util.*" isElIgnore = "false" %>  //不忽略el表达式

<html>

  <head>  <title>springmvc数据回显</title> </head>

  <body>

    <h1>  回显数据: ${ message }</h1>

  </body>

</html>

1、Servlet原生ApI回显数据:

@RequestMapping("/value")

public ModelAndView handlerRequest( HttpServletRequest req,  HttpServletResponse resp){

  req.setAttribute("message","成功");

  return new ModelAndView("test");

}  //localhost/value  返回: 回显数据:成功

2、使用springmvc的ModelAndView对象回显数据:

@RequestMapping("/value")

public ModelAndView handlerRequest( HttpServletRequest req,  HttpServletResponse resp){

  ModelAndView model  = new ModelAndView(viewName:"test");

  model.addObject(attributeName:"message", attributeValue:"成功");

  return model ;

}  // 访问 localhost/value  返回: 回显数据:成功

3、使用Model对象回显数据

@RequestMapping("/value")

public String handlerRequest(Model  m){

  m.addAttribute(s:"message",o:"成功");

  return  "test";

}

//@ModelAttribute注解

public void model(Model model){

  model.addAttribute("message","成功");

}

//message会放进页面参数中,在视图中直接调用。

客户端跳转

/hello 或者/test都是服务端的跳转,即:request.getRequestDispatcher("地址").forwards(req,resp);

改写HelloController控制器类:

@RequestMapping("/hello")

public ModelAndView handlerRequest(HttpServletRequest req, HttpServletResponse resp){

  ModelAndView model = new ModelAndView("index");

  model.addObject("message","hello springmvc");

  return model;

}

@RequestMapping("/jump")

public ModelAndView jump(){

  ModelAndView m = new ModelAndView("redirect:/hello");

  return m;

}

//访问localhost/jump 会自动跳转到  localhost/hello

结果和前面一样

也可以这样写:

@RequestMapping("/jump")

public String jump(){

  return "redirect: ./hello";

}

文件上传

先导入jar包: commons-io-1.3.2.jar      \     commons-fileupload-1.2.1.jar

1、在dispatcher-servlet.xml中配置上传解析器:

<bean id="multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" />

2、 upload.jsp建在page文件夹下:

<%@ page contentType = "Text/html; charset = UTF-8" language = "java" %>

<html>

  <head><title>文件上传</title><head>

  <body>

    <form action = "/upload" method = "post" enctype = "multipart/form-data">

      <input type = "file" name = "picture">

      <input type = "submit" value = "上传">

    </form>

  </body>

</html>

3、编写控制器类UploadController在包controller下:

@Controller

public class UploadController{

  @RequestMapping("/upload")

  public void upload(@Requestparam("picture") MultipartFile file) Throws Exception{

    sysout(file.getOriginalFileName());

  }

  @RequestMapping("/test2")

  public ModelAndView upload(){

    return new ModelAndView("upload")

  }

}

//访问 localhost/test2

注解配置springMVC的更多相关文章

  1. 注解配置springMvc及向作用域中赋值

    1.在applicationContext.xml中配置包扫描器 <!-- 使用注解配置扫描器 --> <context:component-scan base-package=&q ...

  2. 【SpringMVC】完全注解配置SpringMVC

    创建初始化类,代替web.xml 在Servlet3.0环境中,容器会在类路径中查找实现javax.servlet.ServletContainerInitializer接口的类,如果找到的话就用它来 ...

  3. springMVC学习记录2-使用注解配置

    前面说了一下使用xml配置springmvc,下面再说说注解配置.项目如下: 业务很简单,主页和输入用户名和密码进行登陆的页面. 看一下springmvc的配置文件: <?xml version ...

  4. spring mvc 第一天【注解实现springmvc的基本配置】

    创建pojo,添加标识类的注解@Controller,亦可添加该Handler的命名空间:设置类的@RequestMapping(value="/hr") 该类中的方法(Handl ...

  5. SpringMVC基础配置(通过注解配置,非xml配置)

    SpringMVC是什么,有多火,我这里就不再啰嗦了,SpringMVC比Struts2好用太多,我在学校的时候私下里两种都接触过,对比之后果断选择了SpringMVC,后来在做Android应用开发 ...

  6. SpringMVC整合mybatis基于纯注解配置

    Mybatis整合Spring配置 第一部分:配置Spring框架 配置SpringMVC的步骤 配置流程图 导入包(哪些包,基本包5个,1日志依赖包,2webmvc支持包)SpringMVC配置 & ...

  7. 关于什么是SpringMVC,和SpringMVC基于xml配置、注解配置、纯注解配置

    首先我们先要了解一下,什么是SpringMVC? SpringMVC是Spring框架内置的MVC的实现.SpringMVC就是一个Spring内置的MVC子框架,也就是说SpringMVC的相关包都 ...

  8. spring-mvc注解配置小记

    Controller中注解Service时,Service的实现类需加@Service,dao的实现类需加@Repository. 另:配置文件中对应的包也需要扫描到!!! <context:a ...

  9. SpringInAction--Spring Web应用之SpringMvc 注解配置

    Spring MVC 是当前Web服务器中常用的结构,今天就来学习这相关的知识,首先上图——Spring请求的时候所经历的坎坷之路: (书上原话,算是解释..) 在请求离开浏览器时① ,会带有用户所请 ...

随机推荐

  1. 使用Python打造一款间谍程序

    知识点 这次我们使用python来打造一款间谍程序 程序中会用到许多知识点,大致分为四块 win32API  此处可以在MSDN上查看 Python基础重点在cpytes库的使用,使用方法请点击此处 ...

  2. 一个基于图的数据管理系统-gStore

    gStore是遵循 BSD协议的一个开源项目.一个基于图的 RDF 三元组存储的数据管理系统.该项目是北京大学.滑铁卢大学.香港科技大学的联合研究项目.中国北京大学计算机科学与技术研究所的数据库组对该 ...

  3. k8s系列---hpa扩容

    centos-master:172.16.100.60 centos-minion:172.16.100.62 k8s,etcd,docker等都是采用yum装的,部署参考的k8s权威指南和一个视频, ...

  4. pos 访问超时 windows连接超时 497 天后未关闭 TIME_WAIT

    问题描述: nginx连接后台tomcat程序 一直报错 nginx的error日志如下 // :: [error] #: *: A connection attempt failed because ...

  5. CentOS 7的yum更换为国内的阿里云yum源

    Yellow dog Updater(Yum)是CentOS所有版本的默认包管理器,yum主要功能是更方便的添加/删除/更新RPM包,自动解决包的依赖性问题,便于管理大量系统的更新问题,其理念是使用一 ...

  6. office2010无法卸载问题

    普通的卸载方式有: 1.从开始进入控制面板卸载程序,找到office2010并卸载. 2.运用软件管家等强力卸载电脑中的软件. 其他的卸载方式: 1).通过安装windows installer cl ...

  7. Java 添加、读取、删除Excel图片

    本文介绍在Java程序中如何添加图片到excel表格,添加图片时可设置图片大小.位置.旋转.超链接.可选文本等,以及如何读取.删除excel表格中已有的图片. 工具:Free Spire.XLS fo ...

  8. VMware vCenter Server6.0安装及群集配置介绍

    在本项目中,将在VMware Workstation 模拟的Windows Server 2008 R2虚拟机中安装VMware vCenter Server ,并且使用vCenter Server捆 ...

  9. vue路由--命名路由

    有时我们通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候.你可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称. 我们直接在路由下 ...

  10. SOLID原则都不知道,还敢说自己是搞开发的!

    面向对象编程(OOP)给软件开发领域带来了新的设计思想.很多开发人员在进行面向对象编程过程中,往往会在一个类中将具有相同目的/功能的代码放在一起,力求以最快的方式解决当下的问题.但是,这种编程方式会导 ...