Java基础-SSM之Spring MVC入门篇

                  Java基础-SSM之Spring MVC入门篇

                                         作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Spring MVC简介

1>.什么是Spring MVC

  答:SpringMvc是spring的一个模块 基于MVC的一个框架 无需中间整合层来整合。MVC表示的全称为:Model(模型),view(视图),controller(控制器)。

2>.Spring MVC关键组件说明

 1 1>.前端控制器 DispatcherServlet(不需要程序员开发)
 2   作用 : 接收请求、响应结果 相当于转发器,有了DispatcherServlet 就减少了其它组件之间的耦合度。
 3 2>.处理器映射器HandlerMapping(不需要程序员开发)
 4   作用 : 根据请求的URL来查找Handler。
 5 3>.处理器适配器HandlerAdapter
 6   作用 : 按照特定的规则(HandlerAdapter要求的规则)去执行Handler。注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler
 7 4>.处理器Handler(需要程序员开发)
 8 5>.视图解析器 View Resolver(不需要程序员开发)
 9   作用 : 进行视图的解析 根据视图逻辑名解析成真正的视图(view)
10 6>.视图View(需要程序员开发jsp)
11   作用 : View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf。。。)

3>.Spring MVC执行流程

 

二.idea进行web程序开发

1>.创建模块,添加web project支持

 

2>.引入Maven依赖

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>cn.org.yinzhengjie</groupId>
 8     <artifactId>SpringMVC</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10 
11 
12     <dependencies>
13         <dependency>
14             <groupId>org.springframework</groupId>
15             <artifactId>spring-webmvc</artifactId>
16             <version>4.3.5.RELEASE</version>
17         </dependency>
18         <dependency>
19             <groupId>javax.servlet</groupId>
20             <artifactId>servlet-api</artifactId>
21             <version>2.5</version>
22         </dependency>
23     </dependencies>
24 
25 
26 </project>
pom.xml 文件内容

 

3>.配置web.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 5          version="3.1">
 6     <servlet>
 7         <servlet-name>dispatcher</servlet-name>
 8         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 9     </servlet>
10     <servlet-mapping>
11         <servlet-name>dispatcher</servlet-name>
12         <url-pattern>/</url-pattern>
13     </servlet-mapping>
14 </web-app>
web.xml文件内容

4>.编写控制器类

 1 /*
 2 @author :yinzhengjie
 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
 4 EMAIL:y1053419035@qq.com
 5 */
 6 package cn.org.yinzhengjie.springmvc.web.controller;
 7 
 8 import org.springframework.stereotype.Controller;
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 
11 @Controller
12 @RequestMapping("/home")
13 public class HomeController {
14 
15     @RequestMapping("/m1")
16     public String m1(){
17         System.out.println("m1");
18         return "yinzhengjie" ;
19     }
20 }

5>.安装tomcat

  我已经下载好了Tomcat绿色版(链接:https://pan.baidu.com/s/1_fTB5tX0JMUtErI-s0_Ofg 密码:bow5),我们解压就完成了Tomcat的安装。

6>.idea下配置tomcat

  点击设置按钮,就是图中的小扳手,如下:

  点击添加Tomcat Server,如下图所示:

  选择Tomcat的安装目录即可,如下图:

   点击ok,完成配置,如下图所示:

  添加Tomcat服务器:

  配置Tomcat服务器环境:

  配置指定端口:

 点击Project Structure按钮,如下图:

添加依赖库,如下图:

7>.编辑JSP配置文件

 1 <%--
 2   Created by IntelliJ IDEA.
 3   User: Administrator
 4   Date: 2018/7/12 0012
 5   Time: 下午 2:20
 6   To change this template use File | Settings | File Templates.
 7 --%>
 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 9 <html>
10   <head>
11   </head>
12   <body>
13         <h1>尹正杰到此一游!!!</h1>
14   </body>
15 </html>
index.jsp 文件内容
  1 <%--
  2   Created by IntelliJ IDEA.
  3   User: Administrator
  4   Date: 2018/7/12 0012
  5   Time: 下午 3:15
  6   To change this template use File | Settings | File Templates.
  7 --%>
  8 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  9 <!DOCTYPE html>       <!--Doctype告诉浏览器使用什么样的html或xhtml规范来解析html文档。html这种模式兼容浏览器是最好的-->
 10 <html lang="en">
 11 <head  name="尹正杰" age="25">  <!--标签的开头,其里面的内容(name="尹正杰")是标签的属性,其属性可以定义多个。-->
 12     <meta charset="UTF-8"/>     <!--指定页面编码,我们称这种标签类型为自闭和标签,因为我们需要在标签的结尾写上“/”,为了方便我们识别标签类型。-->
 13     <meta http-equiv="refresh" content="5; Url=http://www.cnblogs.com/yinzhengjie/"> <!--这是做了一个界面的跳转,表示30s不运行的话就跳转到指定的URL-->
 14     <title>尹正杰的个人主页</title> <!--定义头部(标签)的标题-->
 15     <meta name="keywords" content="开发者,博客园,开发者,程序猿,程序媛,极客,编程,代码,开源,IT网站,Developer,Programmer,Coder,Geek,技术社区" /> <!--“content”定义关键字,其作用就是让浏览器通过搜索关键字时,会匹配该网站,这就是说如果你没有单独给百度钱的话,这些关键字就尤为重要啦!-->
 16     <meta name="description" content="博客园是一个面向开发者的知识分享社区。自创建以来,博客园一直致力并专注于为开发者打造一个纯净的技术交流社区,推动并帮助开发者通过互联网分享知识,从而让更多开发者从中受益。博客园的使命是帮助开发者用代码改变世界。" />  <!--定义描述字符,其作用就告诉客户你的这个网站是干嘛使用的。-->
 17     <link rel="shortcut icon" href="https://baike.baidu.com/pic/%E9%82%93%E7%B4%AB%E6%A3%8B/6798196/0/d1a20cf431adcbef011db9bba6af2edda3cc9f66?fr=lemma&ct=single#aid=0&pic=d1a20cf431adcbef011db9bba6af2edda3cc9f66" type="image/x-icon" /> <!--定义头部图标-->
 18     <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <!--这个是IE的浏览器生效的规则,如果你用的是谷歌,360等浏览器的话,这行规则不生效,如果你用的是IE浏览器的话,表示用IE最新的引擎去渲染HTML-->
 19 </head> <!--标签的结尾,结合该标签的开头,这种标签类型我们称之为主动闭合标签。-->
 20 <body>
 21 <h1>尹正杰</h1><!--定义文件的内容,其中“h1”标签中-->
 22 <h2>尹正杰</h2>
 23 <h3>尹正杰</h3>
 24 <h4>尹正杰</h4>
 25 <h5>尹正杰</h5>
 26 <h6>尹正杰</h6>
 27 <h1>You are a good boy!</h1>
 28 <div style=" 4000px">  <!--是其缩进代码的父级标签,给其定义宽度属性是200像素大小-->
 29     <h1>尹正杰</h1><!--块级标签:也叫父级标签,即自己单独占了一行空间,或者说是占它父级标签的100%。作用:定义文件的内容-->
 30     <h1>You are a good boy!</h1>
 31 </div>  <!--div的标签的结尾-->
 32 <p>素胚勾勒出青花笔锋浓转淡<br/>瓶身描绘的牡丹一如你初妆<br/>冉冉檀香透过窗心事我了然<br/>宣纸上走笔至此搁一半<br/>釉色渲染仕女图韵味被私藏<br/>而你嫣然的一笑如含苞待放</p> <!--其中<br/>表示换行符的意思,<p></p>表示一个段落的意思。-->
 33 <a>yinzhengjie</a> <!--内联标签,以a开头的标签都是内联标签,这些标签的内容时连接在一起的。:-->
 34 <a>2017</a>
 35 <a href="http://www.cnblogs.com/yinzhengjie/" target="_blank">尹正杰博客</a>  <!--a标签特有的性能,重定向,通过href属性定义需要跳转的网站,通过target="_blank"表示新打开一个标签页并打开新的URL地址-->
 36 
 37 <a href="#Y1">Golang第一章</a>  <!--a标签特有的性能,做锚,找ID为"Y1"的标签并跳转过去-->
 38 <a href="#Y2">Golang第二章</a>  <!--找ID为"Y2"的标签-->
 39 <a href="#Y3">Golang第三章</a>  <!--找ID为"Y3"的标签-->
 40 
 41 
 42 
 43 <div id="Y1" style="height:700px;background-color:antiquewhite">  <!--用id来定义标签为"Y1"(一般要具有唯一性,即尽量不要让标签的id的值相同),用style来定义高度为700像素,颜色用background-color来定义。-->
 44     Golang进阶之路Day1<br/>
 45     Go语言官方自称,之所以开发Go 语言,是因为“近10年来开发程序之难让我们有点沮丧”。 这一定位暗示了Go语言希望取代C和Java的地位,成为最流行的通用开发语言。博客地址:http://www.cnblogs.com/yinzhengjie/p/6482675.html
 46 </div>
 47 
 48 <div id="Y2" style="height:700px;background-color:rebeccapurple;">
 49     <br/>Golang进阶之路Day2<br/>
 50     前者大家应该都很熟悉,因为我在上一篇(http://www.cnblogs.com/yinzhengjie/p/6482675.html)关于GO的博客中用"go build"命令编译不同的版本,但是在这里我们还是要演示一下go build的花式用法。博客地址:http://www.cnblogs.com/yinzhengjie/p/7000272.html
 51 </div>
 52 
 53 <div id="Y3" style="height:700px;background-color:brown;">
 54     Golang进阶之路Day3<br/>
 55     当然我这里只是介绍了Golang的冰山一角,对Golang感兴趣的小伙伴,可以看一下Golang官网的文档说明。毕竟官方才是最权威的,给出国内地址:https://golang.org/pkg/!博客地址:http://www.cnblogs.com/yinzhengjie/p/7043430.html
 56 </div>
 57 
 58 <!--功能最少的标签,最纯洁的易于加工的标签,即他们没有“h1”和"a"标签那么多的属性。-->
 59 <div>我是块标签</div>
 60 <span>我是内联标签</span>    
 61 
 62 <!--列表-->
 63 <ul>    <!--打印字符穿前面带个小黑点-->
 64     <li>菜单一</li>
 65     <li>菜单二</li>
 66     <li>菜单三</li>
 67 </ul>
 68 
 69 <ol>  <!--打印字符串前面有数字标识-->
 70     <li>第一章</li>
 71     <li>第二章</li>
 72     <li>第三章</li>
 73 </ol>
 74 
 75 <ol>
 76     <dd>北京</dd>  <!--自带缩进,可以用于写新闻的标题-->
 77     <dt>朝阳区</dt>
 78     <dt>亦庄经济开发区</dt>
 79     <dt>丰台区</dt>
 80     <dt>海淀区</dt>
 81     <dd>河北</dd>
 82     <dt>石家庄</dt>
 83     <dt>保定</dt>
 84     <dd>陕西</dd>
 85     <dt>西安</dt>
 86     <dt>安康</dt>
 87 </ol>
 88 
 89 
 90 <!--表格-->
 91 <table border="1">   <!--定义一个表格,其属性是border="1",表示加边框的意思。-->
 92     <thead>    <!--定义表头信息-->
 93     <tr>   <!--'tr'表示定义一行的数据,里面的内容由子标签<th></th>实现-->
 94         <th>姓名</th>    <!--'th'定义同一行每一列的内容,也就是说只要带有这个标签的且在其父标签"tr"标签中就是写的同一行内容。-->
 95         <th>年龄</th>
 96         <td>性别</td>
 97     </tr>
 98     </thead>
 99     <tbody> <!--定义表格的内容-->
100     <tr>  <!--'tr'表示每一行的数据,其定义的是行的操作。-->
101         <td>尹正杰</td> <!--td用来定义当前行的每一列的内容,与thead中的'th'用法相同。只不过'th’有加粗效果!-->
102         <td>25</td>
103         <td>boy</td>
104     </tr>
105     <tr>  <!--'tr'表示每一行的数据-->
106         <td>尹正杰</td> <!--‘<td></td>’标签定义的是列的操作-->
107         <td colspan="2">26</td>     <!--注意,'td'标签的colspan属性表示向右占锯的空间,我们给的值是“2”,就表示会从当前列往后在占一个列,共计当前行的两列空间!-->
108     </tr>
109     <tr>  <!--'tr'表示每一行的数据-->
110         <td>yinzhengjie</td> <!--‘<td></td>’标签定义的是列的操作-->
111         <td rowspan="2">26</td>     <!--注意,'td'标签的rowspan属性表示向下占据的空间,我们这里给的是还是“2”,即从当前行的当前列,向下扩充空一列内容。-->
112     </tr>
113     <tr>  <!--'tr'表示每一行的数据-->
114         <td>yinzhengjie</td> <!--‘<td></td>’标签定义的是列的操作-->
115         <td >26</td>     <!--表示这个'td'标签占两列的空间-->
116     </tr>
117     </tbody>
118 </table>
119 </body>
120 </html>
yinzhengjie.jsp 文件内容

 

8>.启动Tomcat服务器

9>.查看webUI内容

  查看index.jsp 文件内容

  查看yinzhengjie.jsp文件内容

  此时,查看服务端有打印数据,如下:

原文地址:https://www.cnblogs.com/yinzhengjie/p/9299239.html