web框架使用手册
- 引入web框架(jar文件,源码)
**
- 引入web框架所需要的依赖
①文件上传相关的jar
②xml解析相关的jar
③json相关的jar
**
- 在web.xml中配置核心入口(Servlet)
通过设置Servlet的参数,指定映射关系配置的xml或注解
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>web.DispatcherServlet</servlet-class>
<init-param>
<param-name>classpath</param-name>
<param-value>mvc.xml</param-value>
</init-param>
<init-param>
<param-name>controller-scan</param-name>
<param-value>com.controller,com.controller2</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 实现映射配置
①xml
默认xml文件在classpath目录下
具体的名称Servlet定义时的参数决定(见上方代码第六行)
xml配置如下:
②注解
需要@Controller、@RequestMapping、@RequestParam注解实现映射的配置
**
@RequestMapping("/test2")
public void t2(@RequestParam("username")String s , Car car, HttpServletRequest req){}
@RequestMapping("/test3")
public void t3(Car car){
System.out.println(car+"123");
}
@RequestMapping("/test4")
public void t4(@RequestParam("cname") String cname , @RequestParam("file") MultipartFile file){
System.out.println(cname);
}
4.1
请求时如果传递了简单的参数(无论是普通请求还是文件上传),在controller的方法中按照业务需求定义方法参数。
①按照需求定义参数类型,框架会自动地将接收到的参数实现类型转换
原来只能是String自己转换,现在框架负责转换,基本数据类型、String、文件类型等都能转换
②需要使用@RequestParam注解指定参数的名字(见上方代码第10行)
4.2
请求时传递了多个参数,按照业务恰好可以组成一个对象
原来需要自己一个参数一个参数的获取,转换,组装,现在只需要在controller方法定义对象类型的参数,框架会自动组装,要求对象的属性名要和请求的参数名一致(见上方代码t3)
4.3
在controller的方法中处理请求时,还需要使用一些Servlet原生对象,request、response、session,只需要在controller的方法中直接定义上述类型的参数即可
4.4
controller处理完请求后,返回字符串,表示转发访问网页
@RequestMapping("/test5")
public String t5(){
//request.getRequestDispatcher("07.jsp").forward(req,resp);
return "07.jsp" ;
}
4.5
controller处理完请求后,返回ModelAndView对象,表示转发访问网页并携带参数
@RequestMapping("/test6")
public ModelAndView t6(){
//request.setAttribute("cname","benz");
//request.setAttribute("price",400000);
//request.getRequestDispatcher("07.jsp").forward(req,resp);
ModelAndView mv = new ModelAndView();
mv.setViewName("07.jsp");
mv.addObject("cname","benz");
mv.addObject("price",400000);
return mv ;
}
4.6
controller处理完请求后,返回带有redirect:前缀字符串,表示重定向访问网页
@RequestMapping("/test0")
public String t0(){
//response.sendRedirect("07.jsp");
return "redirect:07.jsp" ;
}
4.7
controller处理完请求后,返回ModelAndView对象,表示重定向访问网页并携带参数
@RequestMapping("/test7")
public ModelAndView t7(){
//response.sendRedirect("07.jsp?cname=benz&price=400000");
ModelAndView mv = new ModelAndView();
mv.setViewName("redirect:07.jsp");
mv.addObject("cname","benz");
mv.addObject("price",400000);
return mv ;
}
4.8
controller处理请求后,方法配合@ResponseBody表示直接响应
如果是简单类型(String、int、double、boolean等)直接返回字符串
如果是其他类型(集合、对象),会先转换成json格式的字符串,再响应
@RequestMapping("/test8")
@ResponseBody
public String t8(){
return "hello" ;
}
@RequestMapping("/test9")
@ResponseBody
public Car t9(){
Car car = new Car(1,"audi","white",50000);
return car ;
}