springmvc原理+流程+servlet+常见错误码+标准标签库--实训--day20-7-29

day03

maven介绍

  • maven :管理jar,管理文件
    maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。

maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性

利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。

Servlet javase和javaee
  • service , doGet, doPost 方法

  • 用户请求servlet ,调用三个方法的一个,

  • 如果是增删改,执行增删改,重定向到另一个地址,如果是查询,查询数据,放进作用域,转发到某个jsp

  • 上述模式的缺点: 一个类只能有一个地址

  • springmvc可以实现地址写在方法中

  • 在xml 修改 war/jar/pom*****

  • structure 双击 新建webapp, WEB-INF ,web-xml

  • 模式: cs模式,javaSE server,client(客户端)

  • jframe swing javaGUI可视化,用户双击打开类似exe文件 打开后看见界面

  • 缺点:打包,给需要用到该系统的用户,用户双击打开,

  • javaEE 模式: BS模式

  • browser server

  • 客户端发送请求,服务端接收请求,执行相关代码,将结果发送给浏览器(服务器上执行代码)

  • 优点: 维护起来方便,用户不需要修改代码

  • win自带netframework

  • 技术结合硬件环境和网络环境,例如单核cpu飙升,那么并发会不值钱。。

servlet 详解和配置

  • 组件-servlet专门接受不同的请求–执行代码,接受不同的url;
  • servlet是什么?专门用来处理请求的一种组件
  • 什么是组件?代码写类里面,组件也是一种类,一种是特殊功能的类
  • 怎样让一个普通的类成为一种组件呢?一般情况下不是继承一个父类就是实现一个接口
    例如servlet组件,继承httpServlet ;成为过滤器组件,实现Filter接口;
  • 让一个普通的类成为servlet组件:1、继承httpServlet

2、配置要处理的请求;

  • 注解: @WebServlet(加在类上)
    (2)web.xml
    3、调用的代码写在哪

  • 默认如果Servlet访问,调用service方法

  • 自己写的用注解,引入的话用配置web.xml,能加注解的加注解

  • 如果我们servlet没有重写service方法,被访问的话会调用父类的service方法

  • 段进行分支调用,如果是get请求,调用doGet;post:doPost; delete:doDelete;put: doPut;

  • get请求,请求的同时不携带数据;在地址上携带数据

  • post请求额外携带数据包,

  • put请求的同时申请一块空间存储;

  • delete请求的同时删除一块空间

  • 如果没有重写Service,就必须重写doGet和doPost方法

  • servlet并不提倡重写service

常见错误

  • 500 java代码出错
  • 404 地址没有对应的servlet来处理;就是地址写错了或者是servlet地址配错了
  • 405 地址输入的对,但是get和post方式错了,方式错了,你发起get请求,结果服务器只有put
  • 403 找到了资源;例如图片,但是权限不够;
  • 200 正常、

springMVC框架

  • 流程: 1、用户发起请求url,访问到servlet下,dispatchServlet,对所有的请求
    进行拦截,获取到地址URL和请求方式(get,post),服务器拿着地址和请求方式
    去找handlerMapping(映射器,Map)地址加请求方式成为Key,value是handler对象;
    (对象的第一印象是属性和方fa),(handler对象,类名,方法名,参数列表),
    2、如果找到handler对象,将Handler对象返回给DispatchServlet, 3、dispatcher
    Servlet去找handlerAdapter适配器,将handler对象给适配器,调用handler中
    的方法;4、将返回值交给dispatcherServlet 5、拿到返回值,交给视图解析器
    ,View resolver,找到页面渲染数据(大体流程,非官方)

  • 每一步建立在上部成功的基础上 ,其中handler中的类名,方法,参数列表是我
    们自己写的

  • 如果要搭建springmvc:第一部一定是导包;

  • 导入springwebmvc

  • 这么多包的原因是依赖的传递

  • 配置web.xml

  • 步骤:

  • 写框架的人不知道我们干什么,所以读一个文件

day03下午

springmvc中视图层的配置

  • class=“i开头名字最长的**********”
  • name=“viewClass” value="…jstlView"
  • 前缀(prefix) : name=“prefix” ,value="/WEB-IFT/pages/"
  • suffix value=".jsp"
  • 前缀+handler的返回值+后缀 :这个组成的要访问(转发或者重定向)的jsp页面
  • 其中默认是转发,重定向是return “redirect: index”;

modeMap 和 modelAndView

  • modelMap相当于httpServletRequest

  • ModelMap model;

  • model.setAttribute(“key”,“value”)

  • ${key} //el表达式获取数据

  • addAttribute(key,value);

  • modelAndView可以直接返回; .addObject(“key”,“v”);

  • new modelAndView(“index”)

  • return modelAndView

servlet生命周期

  • Servlet是单例;

  • 对象是什么时候创建?一定要在第一次使用前创建,

  • 1、类加载

  • 2、实例化

  • 关键对象什么时候?实例化话同时伴随着动作是初始化,init方法, 该方法会在创建对象的时候调用一次,整个生命周期就只有一次;

  • 通过案例可以看见:默认第一次访问的时候先创建对象在访问

  • 有个属性有 loadOnStartUp 该配置 表示 在服务器 启动的时候创建 Servlet对象*****************

  • urlPatterns="",loadOnStartUp=“1”*********

  • 这个表示服务器启动的时候就创建了Servlet对象

  • loadOnStartUp 说明 越小的 数值越先创建, 都是在服务器启动的时候创建

  • 3、service

  • 4、销毁,destory

  • 如果想让一段代码在服务器启动的时候执行,那么就把它放进Servlet的init中
    并且配置loadOnStartUp=1

  • 读文件的动作一定要在第一次访问前来做,

springmvc步骤

  • 第一部先导包,spring-web-mvc

  • 第二部在web.xml中配置DispatcherServlet

  • 第三部 在springmvc的配置文件中 开启注解驱动,扫描Controller所在的包
    视图解析器

  • suffix后缀,

  • 第四部 , 我们的Controller一定要写在配置文件中要扫描的包里面,并且要写Controller注解

  • 其中开启注解驱动和扫描controller所在的包的代码如下,就是第三部如下


      <!--    开启注解驱动   annotation:注解-->
    <mvc:annotation-driven></mvc:annotation-driven>
      <!--    扫描包,找到handler对象    component:组成部分-->
    <context:component-scan base-package="day03.controller"></context:component-scan>

spring-mvc实现增删查改

  • 用springmvc作一个增删改查

  • 过滤器,把字符编码过滤一下

  • 配置过滤器

  • 类似servlet

  • *

  • 重点得初始化参数

  • lombok 相当省事;@Data @AllArgsConstructor @NoArgsConstructor(无参构造) 生成全部参数的构造方法

  • 下载插件,引入

jstl

  • jstl语法忘了*********
  • 标签库,代替<%

%> 表示嵌入java代码,

  • jstl提供了条件判断,分支循环,等等逻辑

  • 用jstl: 引包

  • <%@ taglib prefic=“c” uri=“http://java.sun.com/jsp/jstl/core”>

  • 每一个user对象是一行数据,

  • items是要循环的集合

  • var表示循环变量,如同for(User 循环变量:要循环的集合)

  • <c:forEach items=“¥{users}” var=“u”></c:forEach>

  • ${u.id},{u.username} , ${u.password}

  • border-collapse: collapse; //合并边框线

  • return:“redirect:index”;//这个是重定向

猜你喜欢

转载自blog.csdn.net/weixin_42333573/article/details/107696100