刚写完快递e栈的项目,对所涉及的知识点进行梳理。
1. 服务器的搭建:
- 使用的服务器是:apache-tomcat-8.5.34
在IntelliJ IDEA配置Tomcat:
点击左侧“+”号,找到Tomcat Server—Local
在Tomcat Server -> local-> Server -> Application server项目下,点击 Configuration ,找到本地 Tomcat 服务 器,再点击 OK按钮。
到这里,IntelliJ IDEA配置Tomcat完成。
2. 创建javaWeb项目
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201217094359422.png)
编辑完项目名称,以及项目根路径,直接下一步就可以。
3. Servlet
Servlet 主要的功能在于交互地浏览和修改数据,生成动态Web内容。
-
Servlet工作模式:
① 客户端发送请求至服务器
② 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器
③ 服务器将响应返回客户端 -
Servlet的使用:
① 需要先创建一个Servlet
② 重写Servlet中的init(),service()的方法
init()方法主要的作用是加载初始化参数
service()方法主要是用于处理不同的请求
③ 在XML配置好Servlet的映射关系 -
当用户发送请求时,xml文件的执行流程:
① 用户发送请求时,根据< servlet-mapping>的< url-patten>对请求进行解析,找到< servlet-name>.
② 通过< servlet-name>找到对应的处理请求的类< servlet-class>的完整路径。 -
Servlet的生命周期:
① 当客户第一次发送请求时,Servlet容器(web服务器(tomcat))对请求进行解析,根据请求找到对应的servlet,判断该类的对象是否存在,不存在则创建servlet实例,调用init(),进行初始化操作,初始化完成后调用service()方法,有service()方法来判断用户的请求方式,如果是get,则执行doGet(),如果是post则执行doPost().处理方法完成后,作出响应,将结果传给客户端.单次请求处理完毕。
② 当用户发送第二次以后的请求时,会判断对象是否存在,但是不再执行init(),而直接执行service方法,调取 doGet()/doPost()方法。
③ 当服务器关闭时调取destroy()方法进行销毁。
简单分为四个过程:
① 实例化–先创建servlet实例
② 初始化–调用init()方法
③ 处理请求–调用service()方法
④ 服务终止–调用destory()方法 -
HttpServletRequest常用的方法:
① String getParameter(String name) 根据表单组件名称获取提交数据,返回值是String
② void setCharacterEncoding(String charset) 指定每个请求的编码(针对post请求才起作用)【但是这里不推荐使用,通过Servlet对请求的编码进行指定,会导致代码冗余并且不灵活,可以使用Filter对于编码方式进行统一规范。】
③ RequestDispatcher getRequestDispatcher(String path) --跳转页面,返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求
④ 存值 request.setAttribute(“key”,value)
⑤ 取值 request.getAttribute(“key”); -
响应(HttpServletResponse)常用的方法:
void addCookie(Cookie var1);//给这个响应添加一个cookie
void sendRedirect(String var1) ;//发送一条响应码,将浏览器跳转到指定的位置
PrintWriter getWriter() 获得字符流,通过字符流的write(String s)方法可以将字符串设置到response 缓冲区中, 随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览器端。
setContentType() 设置响应内容的类型 -
会话(Session)
request存的值只能在单次请求中保存,保存的数据不能跨页面,当重定向时,request存的值会丢失.
session的数据可以在多个页面中共享,即使重定向页面,数据不会丢失.
会话的概念:从打开浏览器到关闭浏览器,期间访问服务器就称为一次会话 -
会话常用方法:
void setAttribute(String key,Object value) 以key/value的形式保存对象值,将数据存储在服务器端
Object getAttribute(String key) 通过key获取对象值 void invalidate() 设置session对象失效
String getId() 获取sessionid,当第一次登录成功后,session会产生一个唯一的id,浏览器之后访问时如果发现id值 还是之前id,那么说明 当前访问的属于同一个会话
void setMaxInactiveInterval(int interval) 设定session的非活动时间
int getMaxInactiveInterval() 获取session的有效非活动时间(以秒为单位),默认的有效时间:30分钟
void removeAttribute(String key) 从session中删除指定名称(key)所对应的对象
小结 :让session失效的方式
(1)invalidate() (2)removeAttribute(“key”) (3)直接关闭浏览器 -
注解
注解(提供给程序读取的信息)
注解的格式:@开头的 如:@Override
@WebServlet注解配置Servlet 从Servlet3.0开始,配置Servlet支持注解方式,但还是保留了配置web.xml方式,所有使用Servlet有两种方式:
(1)Servlet类上使用@WebServlet注解进行配置 (2)web.xml文件中配置
@webServlet常用属性:
loadOnStartup属性:标记容器是否在启动应用时就加载Servlet,默认不配置或数值为负数时表示客户端第一 次请求Servlet时再加载;0或正数表示启动应用就加载,正数情况下,数值越小,加载该Servlet的优先级越高;
urlPatterns/value属性: String[]类型,可以配置多个映射,如:urlPatterns={"/user/test", “/user/example”}
(5).urlPatterns的常用规则:
/*或者/:拦截所有
*.do:拦截指定后缀
/user/test:拦截路径
JSP
-
JSP是在传统的网页HTML文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为 (*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
-
JSP中如何嵌套java代码
① 声明标签 <%!变量或者方法声明%>
② 表达式标签 <%= 表达式%> 在页面上显示的效果
③ 程序代码标签 <%java代码%> 页面上动态展示内容
注释:
< !-- html注释内容,查看源码时能看到 -->
<%-- jsp注释,查看页面源码时看不到 --%> -
JSP的内置对象有9个:分别为:request、response、session、application、out、 pagecontext、config、page、exception
① request:
该对象代表了客户端的请求信息,主要用于 接受通过HTTP协议传送到服务器的数据。(包括头信息、系统信息、请求方式以及请求参数等)。request对象的 作用域为一次请求
② response对象:
response 代表的是对客户端的响应,主要是将JSP容器处理过的对象传回到客户端。response对象也具有作 用域,它只在JSP页面内有效。所属类型:HttpServletResponse
③ session对象:
session 对象是由服务器自动创建的与用户请求相关的对象。服务器为每个用户都生成一个session对象,用于保存该用户的信息,跟踪用户的操作状态。session对象内部使用Map类来保存数据。保存数据的格式为:Key/Value
④ application对象
application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用 中都有效。与session对象相比,application对象生命周期更长,类似于系统的“全局变量” ServletContext
⑤ out 对象
out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时, 可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
⑥ pageContext 对象
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、 session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象
⑦ config 对象
config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取 一个config对象。当一个Servlet 初始化时,容器把某些信息通过config对象传递给这个 Servlet。 开发者可以在 web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数
⑧ page 对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。
⑨ exception 对象
exception 对象的作用是显示异常信息,只有在包含 isErrorPage=“true” 的页面中才可以被使用 -
jsp的作用域:
pageContext(当前页面) -> request(单次请求) -> session(当前会话期间) -> application(服务器运行期间)
4. EL表达式
JSP中简化对象和变量访问的是EL表达式
语法格式:${需要展示信息的名字}
注意:当表达式没有指定变量或者对象的范围时,那么容器会依次从pageContext—>request—>session—>application中查找该变量或对象,我们可以通过隐含对象获得指定作用域的值:
pageScope对象,用于获取当前页面的属性值
requestScope对象,用于获取请求范围的属性值
sessionScope对象,用于获取会话范围的属性值
applicationScope对象,用于获取程序范围的属性值
EL中的简单操作符:
5. Filter(过滤器)
- 什么是过滤器:过滤器:过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理,通常都是用来拦截 request进行处理的,也可以对返回的response进行拦截处理
- 过滤器的使用:
① 创建一个类实现Filter接口
② 重写接口中的方法doFilter()
③ 在web.xml文件中配置
6.MVC
MVC主要将项目分为三个部分来进行代码的编写,视图(View)、控制器(Controller)、模块(Model).
① 视图:视图提供模型的展示,管理模型如何显示给用户,它是应用程序的外观;(jsp/html)(简单来说就是:将处理完用户的请求的结果发送到客户端页面进行显示)
② 控制器:对用户发送的请求进行处理,通过调用service方法进行处理,管理用户和视图的交互,是连接视图和模型的枢纽
③ 模型:管理和处理模块中用到的数据和值(javabean、dao)
MVC执行流程:
7.AJAX
-
AJAX是一种可以实现不重新加载整个页面的情况下,实现数据的交互和更新部分网页的技术
-
AJAX的使用格式:
$.ajax({
url: 请求地址 type:"get | post | put | delete " 默认是get,
data: 请求参数 {“id”:“123”,“pwd”:“123456”},
dataType: 请求数据类型"html | text | json | xml | script | jsonp ",
success: function(data,dataTextStatus,jqxhr){ },//请求成功时
error: function(jqxhr,textStatus,error)//请求失败时 }) -
get() 方法通过远程 HTTP GET 请求载入信息
$.get(url,data,function(result) { //省略将服务器返回的数据显示到页面的代码 }); -
post() 方法通过远程 HTTP GET 请求载入信息。
$.post(url,data,function(result) { //省略将服务器返回的数据显示到页面的代码 });
url:请求的路径
data:发送的数据
success:成功函数
datatype 返回的数据
JSON
json是一种数据交换格式,以键值对的形式存在。【值可以是多种类型,字符串、数组,json类型等等】
json对象,顾名思义,就知道它是一个对象。里面的key就是对象的属性。我们要访问一个对象的属性,只需要使 用【对象名.属性名】的方式访问即可。
Java对象和JSON之间的转换
// 将java对象转换为json对象
Users user2=new Users();
user2.setUsername("李四");
user2.setPassword("abc");
user2.setAge(20);
JSONObject obj=JSONObject.fromObject(user);//obj就是json格式的
// 将json对象转换为java对象
String str="{'username':'李四','password':'admin','age':19}";
JSONObject json=JSONObject.fromObject(str);
Users user=(Users)JSONObject.toBean(json,Users.class);