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”;//这个是重定向