总结
http请求URL定位一个地址 备注:HttpClient apche请求的安装包 浏览器借助ajax 请求—>DispatcherServlet—>HandlerMapping— —>Controller(返回modelAndView)—>ViewResolver–>视图jsp 模板文件数据填充构成静态文件返回给浏览器, 模板技术 javaWeb模板技术 freeMarker技术,模板引擎,改变数据,形成html输出 没有EL表达式使用独特的FTL 模板文件使用别人的Html 将数据放进数据模型,只认模板表达式, jsp可以用EL jstl ,也可以嵌入java代码 模板技术比较单一,前台页面只要设置模板技术,分工比较明确
视图有不同表现形式 框架是固定的,按照流程进行访问请求
主控制器,所有的SpringMVC请求首先进入主控制器 接收所有web请求
配置servlet,进行初始化,实例化Spring容器对象,然后调用HandlerMapping
之前不使用组件扫描使用配置
<bean id="handlerMapper" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <!--请求为hello.do调用id=helloController--> <prop key="/hello.do">helloController</prop> <prop key="/news.do">newsListController</prop> </props> </property> </bean> <!-- 配置helloController --> <bean id="helloController" class="com.tracy.controller.HelloController"></bean> <!-- 配置newsListController --> <bean id="newsListController" class="com.tracy.controller.NewsListController">映射处理器 SimpleUrlhandlerMapping,使用者传递RequestMapping ,.do请求对应Controller
RequestMappingHandlerMapping @requestMapping("/hello.do") public ModelAndView execute(){
} 映射处理器,负责维护请求URL和Controller之间的映射关系,可以根据请求找到相对应的Controller处理
业务控制器,负责调用模型组件,处理请求。
解析Controller返回的结果,定位视图jsp组件(默认是转发方式),将模型数据传递到视图jsp
注解配置,不流行Xml配置 #SpringWebMVC注解配置使用 1.RequestMappingHandlerMapping 支持@RequestMapping(“/请求地址”),在Controller方法前定义或类前定义 public calss Controller{ @RequestMapping("/hello.do") public ModelAndView execute(){
}}
RequestMappingHandlerMapping定义方法 <bean id“” class=“RequestMappingHandlerMapping”> <bean id“” class=“RequestMappingAdapterMapping”> 或 <mvc:annotation-driven /> 自定义标签 封装 上面两个组件 每个标记都需要组件进行解析支撑
hello.do请求—>DispatcherServlet—>HandlerMapping— —>Controller(返回modelAndView)—>ViewResolver–>视图jsp
1.创建项目 2.引入jar包~ 3.配置spring-mvc.xml 编写确实的组件
不用再实现Controller ModelAndView返回的对象数据,不需要数据跳转String就可以 返回值可以是ModelAndView或String 参数可以是有参或无参
参数类型 HttpServletRequest HttpServletResponse HttpServletSession
public String execute() { return “”hello";
}
public ModelAndView execute1(){ ModelAndView mav=new ModelAndView(); mav.setViewName(); mav.getModel().put(“msg”,“传给页面的值”); return mav; }
登录功能 显示登录界面 tologin.do请求 ----DispatcherServlet-----HandlerMapping-----Logincontroller----ViewResolver组件----.jsp
public class LoginController{
@RequestMapping("./tologin.do"); public String toLogin(){ return "login";}
}
登录按钮处理 login.do—DispatcherSrevlet-----HandlerMappaing----LoginController—ViewResolver----成功ok.jsp
@RequestMapping("./login.do")
pubic ModelAndView check( HttpServletRequest request){ //检查用户名 与密码 使用request进行表单数据进行获取 String name=request.getParameter(“name”); String pwd=request.getParameter(“pwd”); if(“scoott”.equalsIgnoreCase(name)&&“123456”.equals(pwd)){ mav.setViewName(“ok”); }else{ mav.setViewName(“login”); } }
//参数传递,名称对应规则 参数必须与form表单数据相同 require true必须有参数传递 defaultValue 默认显示值 @requestParams(value=“username” require=“”true/false“”,defaultValue=“”tom“”) String name, @RequestMapping("./login.do") pubic ModelAndView check(String name,String pwd){ //检查用户名 与密码 使用request进行表单数据进行获取
if("scoott".equalsIgnoreCase(name)&&"123456".equals(pwd)){ mav.setViewName("ok"); }else{ mav.setViewName("login"); }} 400请求参数有问题 传递参数 问题可以1.使用request获取,2.可以参数接收,3.可以封装接收 封装为实体类
@RequestMapping("./login.do") pubic ModelANdView check(User user){ if(“scoott”.equalsIgnoreCase(user.getName)&&“123456”.equals(user.getPwd)){ mav.setViewName(“ok”); }else{ mav.setViewName(“login”); mav.getModel().put(“error”,“输入的信息错误”); } }