赞
踩
所有通过 Java 语言编写可以通过浏览器访问的程序的总称,JavaWeb 是基于请求和响应来开发的,请求是指客户端给服务器发送数据,响应是指服务器给客户端回传数据。
在一个tomcat服务中部署多个web工程,在一台主机启动多个tomcat服务
Tomcat运行原理,使用IDEA整合tomcat,创建并编译部署动态web工程
javaWeb前端三件套 html css javascript
对于后端学习者,不要求精通,要求能够通过web层的前后联调,
把静态html页面转化成动态页面,即要求掌握html、js 的基础知识。
浅谈js开源库jQuery
jQuery是一款几乎被淘汰的js开源库,目前更多使用vue框架,新手不建议深入学习。
jQuery的主要用途为:操作dom对象(增删改查)、处理js事件、封装ajax请求等
浅谈一款古老技术 动态页面jsp
Jsp作为一个后端渲染技术,已经不符合现在前后端严格分离的主流设计思路。“Jsp是严重过时的技术,行将进入坟墓。”
那么jsp被什么替代了?
要么前后端分离,后端只需要返回JSON给前端,页面完全不需要后端管。
要么就是用常见的模板引擎『freemarker』『Thymeleaf』『Velocity』,用法其实跟『JSP』差不太多,只是它们的性能会更好。
但是jsp目前还没在业界彻底消失,尤其是一些老项目的维护。无需深入学习,了解即可。
jsp的表达式脚本可用EL表达式替换;代码脚本可用JSTL标签库替换。
HTTP协议格式:
请求格式:请求行(请求方式、URL、协议版本)、请求头(头部字段名:值)、请求体(key=value&key=value)
发起请求时,请求头header携带了一些有用的键值对,存在request域中,例如发起请求的网页地址referer、主机和端口号host等
响应格式:响应行(协议版本、状态码、状态码描述)、响应头(头部字段名:值)、响应体(响应正文,即回传给客户端的数据)设置resp.setContentType("text/html;charset=UTF-8");
URL:
协议://server name: server port/工程路径/文件路径?参数name=value
常用的四种请求方式:GET(只读) 、POST(可读,可新增)、PUT(修改)、DELETE(删除)
GET与POST的区别:1、GET和POST本质上都是TCP连接,但是提供的服务不同,get只读,post既可读又可新增服务器资源。2、GET把请求参数放在URL中,POST通过请求体传递参数。3.因为浏览器规定URL有最大长度,因此GET请求在URL中传送的参数是有长度限制的,POST没有长度限制。4.GET的参数直接显示在浏览器地址栏,不如POST安全。
响应码:
200 表示请求成功
302 表示请求重定向redirect
404 表示请求服务器已经收到了,但是你要的数据不存在(通常为请求地址出错)
500 表示服务器已经收到请求,但是服务器内部错误(通常是代码出错)
Cookie和Session的区别和联系:
其他内部实现由厂商自己实现,tomcat jetty jboss等等应运而生。
Servlet的主要功能是接受请求,返回响应。
通过web.xml中的servlet标签,通过配置Servlet程序的全类名,设置Servlet在服务器中的映射url,即浏览器可以访问Servlet程序的url。
注:在服务器中/斜杠被解析到当前工程路径。即http://serverName:port/工程路径(ContextPath)/
url地址到Servlet程序的访问:(url: http://ip:port/ContextPath/source)
请求url地址->本机解析url->通过ip地址定位服务器(localhost就是本机)、通过8080端口号定位tomcat容器、通过工程路径定位到tomcat上部署的工程->根据source路径查找工程的web.xml中注册的url-pattern,找到对应的Servlet全类名->执行Servlet程序,返回结果。
继承Servlet,需要自定义doGet doPost方法,且需要从HttpServletRequest中获取请求方式,自己分发请求;
继承HttpServlet,只需重写父类的doGet doPost方法,无需自己分发请求。
作用:可以获取Servlet程序的别名,servlet-name; 获取初始化参数init-param;获取ServletContext对象。
一个web工程,只有一个ServletContext对象,在web工程启动时创建,在Web工程停止时销毁。
ServletContext对象是一个全局域对象,可以用来存取数据。(作用域太大,浪费内存)
ServletContext context = getServletConfig().getServletContext();
作用:获取web.xml中配置的context-param参数,它属于整个web工程context.getInitParameter(“key”);获取工程路径context.getContextPath() 格式为:/工程路径;获取工程部署后在服务器硬盘上的绝对路径 ;像 Map 一样存取数据。
每次只要有请求进入 Tomcat 服务器,Tomcat 服务器就会把请求过来的 HTTP 协议信息解析好封装到 Request 对象中。 然后传递到 doGet 和 doPost方法中给我们使用。
我们可以通过 HttpServletRequest 对象,获取到所有的请求信息。
HttpServletRequest类的常用方法:
getRequestURL() 获取请求的统一资源定位符(绝对路径)
getRemoteHost() 获取客户端的 ip 地址
getHeader() 获取请求头
getParameter(“name”) 获取请求的参数,提交表单中input标签的name属性。
getParameterValues() 获取请求的参数(一个请求参数有多个值的时候使用)
getMethod() 获取请求的方式 GET 或 POST
setAttribute(key, value)设置request域数据
getAttribute(key) 获取域数据 。注意区分请求参数和request域数据。
getRequestDispatcher().forword(req,resp) 请求转发是服务器收到请求后,从一次资源跳转到另一个资源。
请求转发的特点:是同一次请求,共享request域参数。
请求转发必须要以斜杠打头,/ 斜杠表示地址为:http://ip:port/工程名/
解决请求中文乱码问题:req.setCharacterEncoding("UTF-8");
在 web 中 / 斜杠 是一种绝对路径。
/ 斜杠 如果被浏览器解析,得到的地址是:http://ip:port/
/ 斜杠 如果被服务器解析,得到的地址是:http://ip:port/工程路径
注:请求重定向的/是被浏览器解析的。response.sendRediect(“/”); 把斜杠发送给浏览器解析。得到 http://ip:port/
每次请求进来,Tomcat 服务器都会创建一个 Response 对象传递给 Servlet 程序去使用。HttpServletResponse 表示所有响应的信息, 我们如果需要设置返回给客户端的信息,都可以通过 HttpServletResponse 对象来进行设置。
两个方法:两个流同时只能使用一个。
字节流 getOutputStream(); 常用于下载(传递二进制数据)
字符流 getWriter(); 常用于回传字符串(常用)resp.getWriter().write(“回传内容”)
请求重定向:是指客户端给服务器发请求,然后服务器返回给客户端一个新地址,客户端再去访问新地址。resp.sendRedirect("url");
特点:浏览器地址栏发生变化,属于两次请求,不共享request域的数据。
解决响应中文乱码:resp.setContentType("text/html; charset=UTF-8");
Filter可认为是Servlet的一种“变种”,实现javax.servlet.filter接口。
它主要用于对用户请求(HttpServletRequest)进行预处理, 也可以对服务器响应(HttpServletResponse)进行后处理,是个典型的处理链。
Filter 过滤器的使用步骤:
1、编写一个类去实现 Filter 接口
2、实现过滤方法 doFilter()
3、到 web.xml 中去配置 Filter 的拦截路径(url-pattern / servlet-name等)
完整的流程是:
请求先进入doFilter,Filter对用户请求进行预处理,(filterChain以上部分)
调用filterChain.doFilter(servletRequest,servletResponse);
接着将请求交给Servlet进行处理并生成响应,
最后Filter再对服务器响应进行后处理。(filterChain以下部分)
Filter接口中有一个doFilter方法,当开发人员编写好Filter类实现doFilter方法,并配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前(服务器内部对资源的访问机制决定的),都会先调用一下filter的doFilter方法。
Filter的生命周期和Servlet一样,Filter的创建和销毁也是由WEB服务器负责。
不过与Servlet区别的是,它是:
1>在应用启动的时候就进行装载Filter类
2>容器创建好Filter对象实例后,调用init()方法。接着被Web容器保存进应用级的集合容器中
3>当用户访问的资源正好被Filter的url-pattern拦截时,容器会取出Filter类调用doFilter方法,下次或多次访问被拦截的资源时,Web容器会直接取出指定Filter对象实例调用doFilter方法。
Filter不仅可以通过url-pattern来指定拦截哪些url匹配的资源,而且还可以通过servlet-name来指定拦截哪个指定的servlet。
Tomcat 每次创建 Filter 的时候,也会同时创建一个 FilterConfig 类,这里包含了 Filter 配置文件的配置信息。
FilterConfig 类的作用是获取 filter 过滤器的配置内容:
1、获取 Filter 的名称 filter-name 的内容 filterConfig.getFilterName()
2、获取在 Filter 中配置的 init-param 初始化参数 filterConfig.getInitParameter(“name”)
3、获取 ServletContext 对象filterConfig.getServletContext()
FilterChain 就是过滤器链(多个过滤器如何一起工作)
FilterChain.doFilter()方法的作用:1、如果有Filter,执行下一个Filter过滤器;2、如果没有Filter,执行目标资源。
多个Filter执行过滤任务时,执行的顺序是由web.xml中的配置顺序决定的。
特点:
所有filter和目标资源默认在同一个线程中执行;多个Filter共同执行时,共享request对象。
精确匹配 /target.jsp 以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/target.jsp
目录匹配 /admin/ 以上配置的路径,表示请求地址必须为:http://ip:port/工程路径/admin/
后缀名匹配 *.html 以上配置的路径,表示请求地址必须以.html 结尾才会拦截到
Filter 过滤器它只关心请求的地址是否匹配,不关心请求的资源是否存在!
然后通过回调函数,反馈给程序。
用于监听web常见对象HttpServletRequest, HttpSession, ServletContext等。
例如:ServletContextListener 它可以监听 ServletContext 对象的创建和销毁。
监听到创建和销毁之后都会分别调用 ServletContextListener 监听器的方法反馈。
使用步骤如下:
1、编写一个类去实现 ServletContextListener
2、实现其两个回调方法
public void contextInitialized(ServletContextEvent sce);
public void contextDestroyed(ServletContextEvent sce);
3、到 web.xml 中去配置监听器
作用:监听ServletContext对象的创建和销毁(也即监听整个web工程)
tomcat容器启动时,会先加载Listener类,再加载Filter\FilterConfig类,然后加载ServletContext对象。特定的Servlet及ServletConfig对象是在其被访问时才加载的。
启动web工程:
当Servlet 容器启动Web 应用时先调用ServletContextListener的init方法。在调用完该方法之后,容器再对Filter 初始化,并且对那些在Web 应用启动时就需要被初始化的Servlet 进行初始化。
终止web工程:
当Servlet 容器终止Web 应用时,容器先销毁所有的Servlet 和Filter 过滤器,再调用ServletContextListener的destroyed方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。