IDEA+Spring MVC5集成运行,自学方法,@Reque
2018-03-21 本文已影响176人
在路上phper
接着上一章节
如何运行
点击run 选择如下

弹出下面界面

点击加号

选择tomcat server

选择local
弹出如下界面

选择Deployment
点击+号

选择Artifact 出现如下

第一个打包方式和我们上节课手工部署打包很类似
第二个方式会把我们当前网站文件夹原样部署到tomcat(修改代码后可以重新进行发布 一般开发时选择这个)
选择第二个 点击ok
出现如下

画箭头处可以根据自己需要改成二级目录
点击apply ok就可以运行项目了
点击run会帮我们编译并且启动tomcat 默认浏览器会弹出默认的网站首页设置

接下来我们学习下Request Mapping注解
来到https://docs.spring.io/spring/docs/5.0.4.RELEASE/spring-framework-reference/web.html#mvc-ann-requestmapping官网
这个注解可以对我们控制器的方法进行路径的映射
当我们的请求进入DispatherServlet的时候,会做请求处理的分发 而Request Mapping可以对我们的请求地址和请求的方式做一些控制
下面是官方Request Mapping作用的说明

比如说我们想通过url地址来上传图片等 都可以通过这个注解进行相关的属性设置并进行映射
接下来我们看个例子
假设我们有个新闻系统
是通过以下路径进行访问的

接下来创建一个NewsController

其中@RequestMapping注解可以打在类上 也可以打在方法上
比如我们NewsController为多层目录 (全是做新闻的)
代码如下

接下来运行代码
点击run 弹出如下

我们选择Redepoly重新发布到tomcat下 点击ok

接下来浏览器访问下localhost:8080/news/123
出现如下


可以发现我们的newsID如果是字符串也可以访问 (以后我们会对这里的参数进行限定)
在url中如果有path(路径)相关的参数,我们可以通过@PathVariable这个注解得到path参数的值
同样官方还给出支持正则的方式限定我们的参数
官方如下

接下来我们对上面例子字母做下限定

重新运行下项目
再次访问localhost:8080/news/aaa

可以发现出错了
lcoalhost:8080/news/123

可以看出对字母进行了限定
我们在把这个请求地址用火狐的http client 插件做下请求 看下响应内容

可以发现我们用post请求也能正常 访问
那么我们如何限制以什么方式请求呢?
接下来改下代码

重新run一下代码
再次用火狐带的插件post请求一下网址

可以发现出错了
我们用浏览器请求

所以可以使用注解的参数限制请求的方式
还可以使用官网告诉我们的

代码如下

重新run一下
post请求依然报错

get请求正常访问了

接下来我们学习下请求参数

上面我们做了新闻的详细页
下面我们做一下新闻列表页
在NewsController中添加如下

重新run一下
接下来浏览器访问localhost:8080/news/list?page=2

我们把page=2去掉再次访问

可以发现报错了
我们在正式开发时 page不写不应该报错,应该给个默认值
接下来在修改下使其支持默认值

给@RequestParam(请求参数注解)加上参数 参数一表示page不是必须的,参数二表示page默认值为1
写好后重新run
浏览器再次访问localhost:8080/news/list

可以发现能正常访问了
如果我们传入page=3

显示页码为3
以上就是我们的@PathVariable 和请求参数(@RequestParam)
后面我们会结合案例进一步学习