- 搭建环境
- 如何完成controller和viewer的映射
- 如何把值传给controller
- controller传值给viewer
- 异常出咯
- 页面标签
- 文件上传
- 深入一下源代码
controller 控制器
映射文件 当前的url交给哪个controller处理
找到对应的视图 方式
新建mavenproject时要选maven-webapp 不要importm maven 要点enable
- web.xml
<servlet>
<servlet-name>mvc
</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1
</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc
</servlet-name>
<url-pattern>/
</url-pattern>
- 创建一个spring xml 文件 配置
名称为
<servlet-name>mvc
</servlet-name>里的名字
- 找视图
prefix+view +suffix
传值
public
String
hello
(
@RequestParam
(
"username"
) String username){
System.
out
.println(
"hello"
)
;
System.
out
.println(username)
;
return
"hello"
;
}
- Map
- Model
Rest
user_show?id=120
user/120
user_updateIuput?id=123
user/123/delete
rest风格不等于使用Rest技术
GET POST PUT DELETE
强调一个资源对应多个视图 映射json xml视图
显示全部
1
Model-User
添加
<
sf
:form
method
="post"
modelAttribute
="user"
></
sf
:form
>
自动把表单的值添加到user中
redirect 客户端跳转
验证 jsr303
package
com.waj.controller
;
import
com.waj.model.User
;
import
org.springframework.stereotype.
Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.validation.annotation.
Validated
;
import
org.springframework.web.bind.annotation.
PathVariable
;
import
org.springframework.web.bind.annotation.
RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* Created by waj on 17/6/29.
*/
@Controller
@RequestMapping
(
"/user"
)
public class
UserController {
private
Map<String
,
User>
users
=
new
HashMap<String
,
User>()
;
public
UserController
() {
users
.put(
"sdy"
,new
User(
"sdy"
,
"123"
,
"ddd"
,
"ssss"
))
;
users
.put(
"sd"
,new
User(
"yh"
,
"1234"
,
"dddd"
,
"ssss"
))
;
users
.put(
"s"
,new
User(
"sy"
,
"1235"
,
"dd"
,
"ssss"
))
;
users
.put(
"sy"
,new
User(
"sd"
,
"1236"
,
"d"
,
"ssss"
))
;
}
@RequestMapping
(
value
=
"/users"
,
method
= RequestMethod.
GET
)
public
String
list
(Model model){
model.addAttribute(
"users"
,
users
)
;
return
"user/list"
;
}
//连接到add页面时是get请求,访问这段代码
@RequestMapping
(
value
=
"/add"
,
method
= RequestMethod.
GET
)
public
String
add
(Model model){
//开启modeldriven
model.addAttribute(
new
User())
;
return
"user/add"
;
}
//具体添加的时候post,访问以下代码
@RequestMapping
(
value
=
"/add"
,
method
= RequestMethod.
POST
)
public
String
add
(
@Validated
User user
,
BindingResult br){
//一定要紧跟validater写验证结果类binding
if
(br.hasErrors()){
//如果有错误,跳转到add视图
return
"user/add"
;
}
users
.put(user.getUsername()
,
user)
;
return
"redirect:/user/users"
;
}
@RequestMapping
(
value
=
"/{username}"
,
method
= RequestMethod.
GET
)
public
String
show
(
@PathVariable
String username
,
Model model){
model.addAttribute(
users
.get(username))
;
System.
out
.print(username)
;
return
"user/show"
;
}
@RequestMapping
(
value
=
"/{username}/update"
,
method
= RequestMethod.
GET
)
public
String
update
(
@PathVariable
String username
,
Model model){
model.addAttribute(
users
.get(username))
;
return
"user/update"
;
}
@RequestMapping
(
value
=
"/{username}/update"
,
method
= RequestMethod.
POST
)
public
String
update
(
@Validated
User user
,
BindingResult br
,
@PathVariable
String username){
if
(br.hasErrors()){
//如果有错误,跳转到add视图
return
"user/update"
;
}
users
.put(username
,
user)
;
return
"redirect:/user/users"
;
}
@RequestMapping
(
value
=
"/{username}/delete"
,
method
= RequestMethod.
GET
)
public
String
Delete
(
@PathVariable
String username){
users
.remove(username)
;
return
"redirect:/user/users"
;
}
@RequestMapping
(
value
=
"/login"
,
method
= RequestMethod.
POST
)
public
String
login
(String username
,
String password){
return null;
}
}
@Responsebody
绑定请求对象,将json相关协议转成所需的对象
方法的返回结果直接写入HTTP response body中
一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。