dotNet程序员的Java爬坑之旅(三)之spring MVC篇一
使用maven構建springMVC項目,開發工具為IDEA
一、構建Maven項目,模板為WebApp
二、在pom文件中配置SpringMvc配置(springMvc需要以來servlet ,如本地沒有servlet的包,需要引入)如下:
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.9.RELEASE</version>
</dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
三、在web.xml中配置核心servlet(contextConfigLocation 表示spring的配置文件所在的位置,有三種設置方式,我們這裏只說其中一種我個人比較喜歡的方式
<servlet>
<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.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
四、在resources目錄下配置xml文件(spring.xml)并開啓類掃描器和路徑解析器,如下:
<?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"
xmlns:aop="http://www.springframework.org/schema/aop"
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
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
"> <!--配置包掃描-->
<context:component-scan base-package="com.web"/> <!--配置路徑解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
五、創建對於的controller類,設置注解,如下:
@Controller/*表示此類為控制器類*/
@RequestMapping("/hell")/*表示此控制器的路徑*/
public class HellorWordController { @RequestMapping("/world")/*表示此方法的訪問路徑*/
@ResponseBody/*表示將返回指展示在web頁面*/
public String hell(){
return "Hello World";/*一般表示view的路徑名稱,和配置中的前后綴拼接成view頁面的完整路徑*/
}
}
六、設置tomcat,啓動。目前爲止一個基礎的springMVC項目,直接啓動訪問對應的路徑即可
七、@RequestMapping注解詳解:
@RequestMapping("/path"):映射請求,映射請求參數&請求頭,處理模型數據,視圖和視圖解析器。除了修飾方法,也可以修飾類。
根據value屬性設置訪問路徑
根據method屬性設置訪問方式(例子:@RequestMapping(value = "/world",method = RequestMethod.GET))
根據規則設置參數,例:@RequestMapping(value = "/world",method = RequestMethod.GET,params = {"username","age!=10"})具體如下:

url路徑映射可使用通配符方式

解析佔位符:

REST Full 方式的請求
首先在web.xml中配置filter
該filter 會監控全部請求,如果請求中包含_method 參數
_method 可以設置為 delete or put
過濾器會根據參數轉換成對應類型的請求。
注:只能轉換post請求
<!--配置rest 轉換配置,轉換post請求為delete 或 put-->
<filter>
<filter-name>HiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>HiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
獲取請求參數
/*映射請求參數
* @RequestParam(value="請求參數名稱")
* required = true 表示是否必須
* defaultValue = "設置默認值"
* */
@RequestMapping("/requestParam")
public String requestParam(@RequestParam(value = "name",required = true,defaultValue = "小王")String name,
@RequestParam("age") int age){ return "page";
}
獲取請求頭信息

根據cookie名稱獲取cookie數據
/*
根據cookie名稱獲取cookie信息
*/
@RequestMapping("/cookie")
public String cookieValue(@CookieValue("cookie名稱")String cookie){
return "page";
}
八、使用POJO對象綁定請求參數值
SPring Mvc 會按請求參數名和POJO屬性名進行自動匹配,自動為該對象填充屬性值。支持級連屬性。如:dept.depId、dept.address.tel等,具體實現如下:
控制器層:

page層:表單内輸入框的name屬性名稱應當于實躰類内部定義的屬性的名稱一致,如果使用的是restfull風格,則需要定義name屬性為_method名稱的隱藏控件,控件的value值為需要轉換的請求方式。
九、使用servlet原聲的api作爲參數


十、處理模型數據(1)


十一、處理模型數據(2)map

十二、@SessionAttributes
若希望在多個請求之間公用某個模型屬性數據,則可以在控制器上標注一個@SessionAttribute,springMVC將在模型中對應的屬性暫時存放在HttpSession中。
@SessionAttribute 除了可以通過屬性名指定需要放到會話中的屬性外,還可以通過模型屬性的對象類型,指定那些模型屬性需要放到會話中。

十三、@ModelAttributes

dotNet程序员的Java爬坑之旅(三)之spring MVC篇一的更多相关文章
- dotNet程序员的Java爬坑之旅(二)
囉里囉唆的寫了一大堆,最後還是全刪除了.哎~ 言歸正傳,最近因爲發生了很多事情,所以更新的有嗲晚了,最近也一直在學習,但是感覺效率什麽的不是很高,這是不對的,反思一下,從這篇博文開始,打起精神吧. M ...
- dotNet程序员的Java爬坑之旅(一)
仔细想了下还是转java吧,因为后期不管是留在北京也好还是回老家也好,java的工作都会好找一点.现在的工作主要还是写.net,目标是下一次离职的时候可以找到一份全职的java工作,我一直都觉得实践才 ...
- 黑马程序员:Java基础总结----泛型(高级)
黑马程序员:Java基础总结 泛型(高级) ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...
- 黑马程序员:Java基础总结----类加载器
黑马程序员:Java基础总结 类加载器 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...
- 黑马程序员:Java基础总结----静态代理模式&动态代理
黑马程序员:Java基础总结 静态代理模式&动态代理 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public class Ts { ...
- 黑马程序员:Java基础总结----枚举
黑马程序员:Java基础总结 枚举 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 枚举 为什么要有枚举 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别 ...
- 黑马程序员:Java基础总结----反射
黑马程序员:Java基础总结 反射 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 反射 反射的基石:Class类 Class类代表Java类,它的各个实例对象又分别 ...
- 黑马程序员:Java基础总结----JavaBean 内省
黑马程序员:Java基础总结 JavaBean 内省 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! JavaBean 内省 软件包 java.beans 包含与开 ...
- 黑马程序员:Java基础总结----java注解
黑马程序员:Java基础总结 java注解 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...
随机推荐
- js将一维数组转化为二维数组
遇到的问题: 后端返回的是一组一维数组,但是需要展示的格式是二维数组,常见的场景举例:后台返回10个长度的数组,需要分成3个一组展示在banner上. 例:[1,2,3,4,5,6,7,8,9,10] ...
- PyQt5实现邮件合并功能(GUI)
1. 实战Word批量 需要处理批量替换word的一些数据,数据源从Excel中来. Excel的百分数会变为数字,以及浮点数会多好多精度,为了原汁原味的数据,直接复制数据到文本文件.通过\t来分隔即 ...
- 关于Hibernate和Strtus2的xml提示问题
话不多说,上图 1.Windom 2.preferences 3.搜索框搜索xml catalog 点击Add 4.导入约束(具体操作图上1.2.3)
- 树——B-树
B树的定义: 1.若根结点不是终端结点,则至少有2棵子树 2.每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 3.每一个叶子节点都包含k-1个元素,其中 m/2 ...
- Spring整合quart初识
Spring集成quart有两种方式,一种是实现Job接口,一种是继承QuartzJobBean 刚开始报错:持久化时未序列化异常 <bean id="simpleJobDetail& ...
- java中Method.invoke方法参数解析
通过发射的机制,可以通过invoke方法来调用类的函数.invoke函数的第一个参数是调用该方法的实例,如果该方法是静态方法,那么可以用null或者用类来代替,第二个参数是变长的,是调用该方法的参数. ...
- Python module ---- argparse
argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行参数,程序只需定义好它要求的参数,然后argpars ...
- jsp页面选择文件上传,获取不到绝对路径问题
选择"D:\\temp\file\test.txt"文件,alert(filename)却是"C:\\fakepath\test.txt" 出现D:\\temp ...
- Django中ORM实际应用
1. Django中ORM的使用 1. 手动新建一个数据库 2. 告诉Django连接哪个数据库 settings.py里面配置数据库连接信息: # 数据库相关的配置项 DATABASES = { ' ...
- jsp Servlet 文件上传
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...