先搞清楚Spring和SpringMVC区别:
Spring是IOC和AOP的容器框架,即Spring是管理Bean的;而SpringMVC是基于Spring功能之上添加的Web框架。即SpringMVC依赖于Spring,
复习Spring Spring MVC 最近自己在用spring boot ;但这种基本的还是要理解。
converter
tar表示源类型;obj目标类型
Formatter数据源必须是String,在Web应用更加合理。
当输入“apple,10.58,200”时,表示在程序中自动创建一个new Goods,并将“apple”值自动赋值给goodsname属性,将“10.58”值自动赋值给goodsprice属性,将“200”值自动赋值给goodsnumber属性。
1.实体类 GoodsModel
package dto/model;
public class GoodsModel {
private String goodsname;
private double goodsprice;
private int goodsnumber;
//省略setter和getter方法
}
2.控制器类
使用@RequestParam(“goods”)接收请求参数,
然后调用自定义类型转换器GoodsConverter将字符串值转换为GoodsModel的对象gm
使用@RequestMapping("/converter")或者@RequestMapping("/formatter")
@Controller
@RequestMapping("/my")
public class ConverterController {
/*
@RequestMapping("/converter")
@RequestMapping("/formatter")
*/
@RequestMapping("/converter")
public String myConverter(@RequestParam("goods") GoodsModel gm, Model model){
model.addAttribute("goods",gm);
return "showGoods";
}
}
3.package: converter
GoodConverter.java 实现Converter接口并且实现该方法
public class GoodsConverter implements Converter<String, GoodsModel>{
}
4.springmvc-servlet.xml
在配置文件中注册自定义类型转换器
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="converter.GoodsConverter"/>
list>
property>
bean>
mvc模式
spring mvc 工作原理
四个星星:MVC四个接口:
流程:
1.客户端发出http请求(localhost:8880)到DispatcherServlet前端控制器
2.DispatcherServlet 通过 handlerMapping找对应的Controller
3.调用Controller
4.Controller通过Service处理用户的请求
5.返回ModelAndView(return回的)处理结果给DispatcherServlet
6.处理视图映射ViewResolver找到View对象要渲染页面
7.通过Model将模型数据传给视图View显示
8.返回请求
web.xml 部署DispatcherServlet:
其servlet对象springmvc初始化时,将在应用程序的WEB-INF目录下查找一个配置文件
即WEB-INF下创建的springmvc-servlet.xml(springName-servlet.xml
<servlet>
<servlet-name>springmvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
springmvc-servlet.xml
在基于注解之后不需要bean控制器类
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean name="/login" class="controller.LoginController"/>
<bean name="/register" class="controller.RegisterController"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
bean>
beans>
springmvc-servlet.xml
@RequestMapping(" [ 请求的地址 ] ", method=“POST/GET”)在方法或者类上(默认post)
或者直接@PostMapping@GetMapping
自动扫描代替用bean来注册:
<context:component-scan base-package="controller"/>
仅Get提交方式 @GetMapping或加method属性的@RequestMapping
@RequestMapping(value="/register/{uname}/{upass}", method=RequestMethod.GET)
//必须加method属性的
public String register(@PathVariable String uname,@PathVariable String upass, Model model) {
}
@GetMapping("/profile/{action}")
public String profile(@PathVariable(name = "action")String action,
Model model){
if("productions".equals(action)){}
}
升级版”处理方法“
获取时候与前端的name都需要一致:
“通过处理方法的形参接收请求参数”不会报404错误,而“通过@RequestParam接收请求参数”会404错误
升级版”@RequestParam“
不需要使用model.addAttribute语句,自动数据绑定与模型数据展示
@ModelAttribute(“user”) UserForm user
将请求参数的输入封装到user对象中并且
创建UserForm实例,以“user”为键值存储在Model对象中,与“model.addAttribute(“user”, user)”语句功能一样.
@ModelAttribute UserForm user (没有制定键值)
默认model.addAttribute(“userForm”, user)
@RequestMapping("/register")
public String register(HttpServletRequest request, Model model) {
String uname = request.getParameter("uname");
String upass = request.getParameter("upass");
/转发到一个视图
return " str ";
/重定向到一个请求方法
return "redirect:/str";
/(同一个控制器类里,可省略/str1/)
return "forward:/str1/str2";