一.cs结构的软件:
1.cs:client Server客户端和服务器,这种软件需要安装
2.优点:可以减轻服务器端的压力,将部分代码写到客户端
3.缺点:一但服务器更新了,客户端也需要更新
二.bs结构的软件:-----用的比较多
1.bs:Browser Server浏览器和服务器,不需要安装
2.优点:服务器一但更新,不需要更新客户端
3.缺点:服务端压力会比较大,界面不如cs结构软件
静态web资源:HTML Css js
动态web资源:Servlet、JSP、PHP、ASP-----前两个是重点
动态web资源目录结构:
website--静态页面(HTML、CSS、JS、图片) JSP页面 WEB-INF web.xml
Tomcat项目发布项目一:
1.直接将项目复制到tomcat/webapps下
2.在tomcat/conf/server.xml配置tomcat的虚拟路径
3.在tomcat/conf/Catalina/localhost下
Tomcat项目发布项目二:
1.需要配置Tomcat的虚拟路径。
一.如何配置虚拟路径:
1.在Tomcat/conf/server.xml中进行配置。
如何在Eclipse中配置Tomcat:
1.选择window--preferences--server--Runtime
ipconfig/all可以查看本机的ip地址。
HTTP的概述:
一.什么是HTTP协议---超文本传输协议,主要是接受http页面。
二.特性:
1.必须要先有请求,后有响应
2.请求和响应必须成对出现
请求部分:
1.请求行----请求方式----一般是get和post
2.请求头----格式一般都是一个key对应的一个vaule的情况
3.请求体----只有post请求方式才有请求体,而且请求体是post方式请求参数
响应部分:
1.状态码:200--响应成功 302--需要进行重定向操作 304--需要查找本地缓存 404--请求资源不存在 500--服务器内部错误
2.响应头:格式一般都是一个key对应的一个vaule的情况 Refresh:定时刷新
3.响应体:就是显示在浏览器上的东西
Servlet的概述:
一.什么是Servlet---Servlet其实就是一个运行在web服务上的小的java程序,用于处理从web客户端发送的请求,并且对请求做出响应。
使用Servlet:
1.编写一个Java类实现Servlet的接口。
2.配置Servlet是在xml里
Servlet的实现关系:
一.HelloServlet接口有两个类:
1.GenericServlet类------通用的Servlet,是一个与协议无关的Servlet
2.HTTPServlet类-----Http专用的Servlet
通常编写一个Servlet,一般都会让这个Servlet继承HTTPServlet,然后重写servlet方法
为了提高效率,在doget方法里调用postget,反之
Servlet的生命周期:
一:什么是生命周期-----一个对象从创建到销毁的过程。
二:Servlet何时创建何时销毁?
1.Servlet有init、servlet、destroy方法,这几个方法称为是Servlet生命周期相关的方法,
2.Servlet在被访问的时候会被实例化,只要Servlet被实例化那么Servlet中的init方法就会被执行(init只会执行一次),任何从客户端发送的请求,
Servlet中的servlet方法就会执行(在servlet方法内部根据请求的方式不同调用不同doxxx方法)。当Servlet从服务器中移出或者服务器关闭的时候
Servlet被对象销毁,里面destroy方法就会被执行,然后垃圾回收就会将其收掉。
如何在服务器启动之前创建servlet对象?
配置:在xml里servlet里定义 <load-on-startup>2---整数越小创建的对象越快</load-on-startup>标签
Servlet访问路径的配置:
1.在 xml里<servlet-mapping>里<url-pattern>必须以/开始 (/* /aaa/*) 还有扩产名匹配---不能以/开始,是以*开始*.abc</url-pattern>配置
ServletConfig对象:
1.ServletConfig用来获得Servlet的相关配置的对象。
2.如何获得ServletConfig对象----通过getServletConfig获取。
3.getServletConfig里有什么方法----1.通过getInitParameter获取初始化值 2.通过getInitParameterNames()获得所有
初始化参数的名称。3.通过getServletName获得名称
4.配置Servlet的初始化方式---在xml里servlet里定义<init -param></init -param>标签,
里面有<param-name></param-name>,<param-value></param-value>
ServletContext对象:
一:什么是ServletContext---ServletContextt对象对servlet之前和之后的内容都知道。
二:ServletContext的作用:
作用1:用来获取web项目信息----因为web项目只有一个ServletContext对象,所以对这个项目的内容都是理解的。
getMimeType----获取文件的MIME类型。
getContextPath----获得请求路径的工程名。
getInitParameter----获得全局初始化参数。
作用2:用来读取web项目下的文件---利用file来读取
ServletContext对象之作为域对象存取数据:
一:什么是域对象:指的是将数据存入到域对象中,这个数据就会有一定的作用范围。
二:ServletContext作为域对象:
1.getAttribute(string name)----返回object,存入数据的方法
2.setAttribute(string name)----返回object,获取数据的方法
3.removeAttribute(string name)返回void,移除数据的方法
Response对象的API:
一:Response关于响应行的方法:
1:setStatus(int sm)返回值void-----设置响应状态码。
二:Response关于响应头的方法:
1:setHeader(string name,string value)---针对一个key对应的一个value,有关于跳转,
2:实际开发可以使用---Response.sendRedirect("location","url")
页面定时跳转扩展内容:
一:使用js完成读秒的效果:
1.response.setHeader("Refresh", "5;url=/SM/responsedemo2");
Response对象响应的中文乱码处理:
1.使用字节流的方式输出中文:ServletOutputStream outputStream=response.getOutputStream();---outputStream.write("中文".getBytes());之后要调用
2.出现乱码解决:设置getBytes()里为getBytes("UTF-8"),然后把头部response.setHeader("Content-Type", "text/html;charset=UTF-8");
3.字符流比较好用
Request对象的概述:
1.getMethod()----返回string,获得请求方式。****
2.getQueryString()---返回string,获得请求路径后的提交参数的字符串。
3.getRequesURL()---返回string,获取请求路径URL
4.getRemoteAddr()---返回string,获得客户端的请求方式****
5.getHeader(string name)---返回string,获取请求头的方法
6.getParameterValues(string name)---返回string,一个name对应多个value,比如爱好***
7.getParameterMap()---返回Map---可以接收提交的所有参数***
8.setAttribute(string name)---返回void,向Request域中存数据
9.getAttribute(string name)---返回void,从Request域中获取数据
10.RemoveAttribute(string name)---返回void,从Request域中移除数据
Request对象接收表单请求参数:
1.request.getParameter( )----一个值
2.request.getParameterValues( )----多个值
3.request.setCharacterEncoding("UTF-8");-----解决post方法乱码问题
JSP:
1.servlet的缺点:需要进行配置,不方便维护,很难向网页输出html页面内容。
2.jsp的简单使用:先在webContent新建一个文件夹,再新建一个jsp。
3.jsp缺点:数据的封装和处理很难。
4.JSP+Javabean:优点:显示数据和封装数据非常方便。缺点:维护很麻烦。
JSP的脚本元素:
1.什么是JSP脚本元素:JSP=HTML+Java代码+JSP自身东西。 JSP的元素就是在JSP中嵌入java代码。
2.声明标签:
语法:<%! 变量或方法声明 %>
用法:
3.表达式标签:
语法:<%=i 表达式 %>
4.程序代码标签:
语法:<% int x=5 程序代码%>
JSP开发模式之MVC模式:
1.JSP+Javabean:使用jsp来显示数据,使用Javabean来封装和处理数据。-----开发简单应用
2.JSP+servle+Javabean(称为MVC开发模式):使用jsp来显示数据,使用Javabean来封装和处理数据,servlet用来控制调度
Request作为域对象存储对象:
1.setAttribute(string name)---返回void,向Request域中保存数据。
2.getAttribute(string name)---返回object,从Request域中获取数据。
3.removeAttribute(string name)---返回void,从Request域中移除数据。
Request作为域对象作用范围:
1.Request对象其实就是从客户端浏览器向服务器发送的一次请求信息的封装。
请求转发和重定向完成页面的跳转:
1.请求转发的写法:通过servletRequest对象获得RequestDispatcher对象
2.getRequestDispatcher(string path)---返回RequestDispatcher,通过这个方法获得RequestDispatcher对象。
3.forward(ServletRequest request, ServletResponse response)---返回void,再根据RequestDispatcher中的方法进行跳转。
重定向:sendRedirect(string location)---返回viod,通过HttpServletResponse对象中的方法实现重定向。
请求转发和重定向的区别:
1.如果需要request进行值传递,需要通过请求转发来完成。
2.如果页面需要调整到其他网站上必须使用重定向。
记录登录成功人数分析:
1.保存到ServletContext域中,在登陆成功后,从域中将这个值获取到,进行+1操作,将这个值存回到ServletContext域中。
会话技术:
1.会话简单理解为:用户打开一个浏览器,点击多个超链接访问服务的web资源,然后关闭浏览器,整个过程称为一次会话。
会话技术分为Cookie和Session技术:
1.Cookie是客户端技术,程序把每个用户的数据以Cookie的形式保存到各自浏览器中,当用户使用浏览器再次去访问服务web中的资源,就会带各自的数据过去
2.Session是服务端技术,利用这个技术,服务器运行是为每个用户的浏览器创建一个独享的session对象。
记录用户上次访问时间:
1.getCookies( )----返回Cookie[ ],获取从浏览器带过来的所有Cookie
2.addCookie(Cookie cookie )----返回void,向浏览器回显Cookie
Cookie的分类:
1.默认级别的Cookie:没有设置有效时间,只要关闭了浏览器,Cookie也被销毁了。
2.持久级别的Cookie:可以设置有效时间,这种Cookie的内容不是保存在浏览器的内存中,将Cookie的内容保存到硬盘上。
如何设置有效时间:定义一个构造方法---Cookie(string name,sting value)
3.getName( )----返回string,获得Cookie名称的方法
4.getValue( )----返回string,获得Cookie值的方法
5.setDomain(string patter)----返回void,设置Cookie的有效域名
6.setPath(string url)----返回void,设置Cookie的有效路径
7.setMaxAge(int expiry)---返回void,设置Cookie的有效时长
8.浏览器存放的Cookie的大小和个数都是有限制的。
Session:
1.Session:没有大小和个数的限制。
2.Session的获取:HttpSession session=request.getSession( );
3.setAttribute(string name,object value)----返回void,向session中存入数据。
4.getAttribute(string name)----返回object,从session域中获取值
5.removeAttribute(string name)----返回void,从session中移除数据
一次性验证码的效验:
1.先在服务器中生成随机数,然后保存到session,验证码使用后,直接从session移除
JSP的模板修改和注释:
一:jsp的模板修改:
1.打开窗口,在到首选项搜索jsp。
二:jsp的注释:
1.<%--内容--%>----jsp的注释
三:jsp的指令元素:
1.用于指示jsp执行步骤
2.语法:<%@ 指令名称 属性名称=属性的值 %>
四:jsp指令元素的分类:
1.page指令---指示jsp的页面设置属性和行为
1.写法:<%@ page 属性名称=属性的值 %>
2.在jsp页面中,中有import属性可以出现多次,其他属性只能出现一次
3.page指令属性有哪些:language、extends、session、buffer、autoFlush、import、isErrorPage、errorPage、isELIgnored
2.include指令---指示jsp包含哪些其他页面
1.写法:<% include 属性名=属性值 %>
2.作用:在jsp页面中静态包含一个文件,同时由该jsp解析包含的文件内容
3.include指令属性有哪些:file--指示jsp页面包含页面路径,用于导航栏跳转不变化的引入
4.应该将被包含的页面结构去掉
5.在被包含的页面中定义变量,在包含的页面还可以使用
3.taglib指令---指示jsp页面包含哪些标签库
1.写法:<%@ taglib 属性名称=属性的值 %>
2.作用:用于在jsp页面中引用标签库
3.taglib指令属性有哪些:uri--引用标签库的路径、prefix--引入标签库的别名
JSP的内置对象:
一:jsp的内置对象有哪些:
1.Request:从客户端向服务器发送请求对象
2.response:从服务端向客户做出响应对象
3.session:服务器为客户端创建会话对象
4.application:代表应用,获得ServletContext对象
5.out:向输出流写入内容对象
6.page:当前的jsp翻译成servlet后的对象的引用
7.pageContext:本jsp的页面上下文对象
8.config:本jsp的ServletConfig对象
9.exception:表示jsp页面运行时产生的异常对象
pageContext对象:
1.作用1:提供了page范围的数据存取的方法:
1.向page中存入数据---setAttribute(string name,object value)返回一个void
2.从page中取出数据---getAttribute(string name)返回一个object
3.从page中移除数据---removeAttribute(string name,int scope)返回一个void
4.查找属性得方法---findAttribute(string name)返回一个object
2.作用2:通过这个对象获得其他得8个内置对象:如:pageContext.setAttribute("name", "李四", pageContext.REQUEST_SCOPE);
JSP四个作用范围:
1.PageScope:页面范围指的是在当前页面内有效,出了这个页面,用pageContext保存得数据就无效了
2.RequestScope:请求范围就是从客户端向服务器发送一次请求,服务器对这次请求做出了响应之后,用request保存得数据就无效了
3.SessionScope:会话范围就是每个浏览器向服务器发送请求,将该会话结束
4.ApplicationScope:应用范围就是在整个应用中任意的地方都可以获取
JSP的动作标签:
1.jsp的动作标签用于在jsp页面中提供业务逻辑功能,避免在jsp页面直接编写java代码,造成jsp难以维护。
2.常用的动作标签:
1.<jsp:forward/>---请求转发。
2.<jsp:include/>---包含(动态包含)
3.<jsp:param/>---传递参数
EL的概述:
1.EL作用---EL和JSTL一起使用取代jsp页面中嵌入java代码写法
2.EL功能:
1.EL获取数据:
1.EL表达式语句在执行的时候,会调用pageContext.findAttribute( )方法。
2.先pageContext.setAttribute("name", "张三");再${pageScope.name }。
2.EL执行运算
3.EL获取web开发常用的对象
4.EL调用java方法
EL语法:${EL表达式(如:pageScope.name)}
EL获取数组和集合的数据:
1.要把数组放进pageContext.setAttribute("arr", arr)域中。
EL获取web开发常用对象:
1.pageContext
2.pageScope--获取指定域下的名称的数据
3.requestScope--获取指定域下的名称的数据
4.sessionScope--获取指定域下的名称的数据
5.applicationScope--获取指定域下的名称的数据
6.param--在页面中接收请求参数(接收一个名称对应一个参数值)
7.paramValues--在页面中接收请求参数(接收一个名称对应一个参数值)
8.header--在页面上获取请求头(获取一个key对应一个value头)
9.headerValues--在页面上获取请求头(获取一个key对应多个value头)
10.cookie--访问cookie的名称和值(${cookie.key.name})${cookie.key.value}
11.initParam--获得全局初始化参数
JSTL的概述:
1.JSTL的作用:主要和EL来取代传统页面上直接嵌入java代码的这种写法。提升程序的可读性、维护性和方便性。
2.JSTL的标签库:
1.c标签(core标签库)**
2.fmt标签(国际化标签库)
3.xml标签
4.sql标签
5.jstl函数库
JSTL入门:
1.先在lib里引入两个jar包
2.再<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>放在顶部
监听器:
1.监听器是一个实现了特定接口的java类,这个java类用于监听另一个java类的方法调用或者属性的改变。当被监听对象发生上述事件后,监听某个方法会被执行
2.监听器用来监听其他对象的变化,主要应用在图形化界面上开发
3.监听器的术语:
1.事件源:指的是被监听对象(汽车)
2.监听器:指的是监听对象(报警器)
3.事件源和监听器绑定:在汽车上安装报警器
4.事件:指的是事件源对象的改变(踹了汽车一脚)
Servlet中的监听器:
1.用于监听事件源分别是ServletContext、ServletRequest和HttpSession这三个域对象
1.ServletContextListener监听器:
1.作用:用来监听ServletContext域对象的创建和销毁的监听器
2.创建:ServletContext在服务器启动的时候,为每个web应用创建单独的ServletContext对象
3.销毁:在服务器关闭的时候,或者从web服务中移除的时候
4.方法:contextInitialized(ServletContextEvent sce)---返回void,监听创建的方法
5.方法:contextDestroyed(ServletContextEvent sce)---返回void,监听销毁的方法
2.HttpSessionListener监听器:
1.作用:用于来监听HttpSession对象的创建和销毁
2.创建:服务器端第一次调用getsession()方法的时候
3.销毁:非正常关闭服务器、Session过期(默认过期30分钟)、手动调用session.invlidate()方法。
4.方法:sessionCreated(HttpSessionEvent se)---返回void,监听创建的方法
5.方法:sessionDestroyed(HttpSessionEvent se)---返回void,监听销毁的方法
6.问题:1.访问html是否创建Session---不会 2.访问jsp是否创建session---会 3.访问Servlet是否创建Session---不会
3.ServletRequestLisrener监听器:
1.作用:用于来监听ServletReques对象的创建和销毁
2.创建:从客户端向服务器发送一次请求,服务器就会创建request对象
3.销毁:服务器对这次请求做出了响应
4.方法:requestInitialized(ServletRequestEvent src)---返回void,监听创建的方法
5.方法:requestDestroyed(ServletRequestEvent src)---返回void,监听销毁的方法
6.问题:1.访问html是否创建请求对象---会 2.访问jsp是否创建请求对象---会 3.访问Servlet是否创建请求对象---会
2.监听器的分类:
1.监听三个域对象的创建和销毁的监听器
2.监听三个域对象的属性变更(添加属性、移除、替换)的监听器
3.监听HttpSession中javabean的状态改变的监听器
1.保存在session域中的java类可以有多种状态:绑定到session中;从session中解除绑定。
2.Servlet定义了两个特殊的监听的接口来帮助java类了解自己在session域中的状态:
1.HttpSessionBindingListener接口:--监听java类
1.方法:valueBound(HttpSessionBindingEvent event)---返回void
2.HttpSessionActivationListener接口:实现了两个接口的类不需要在web.xml中进行配置
Filter:
1.Filter称为过滤,web开发人员通过Filter技术,对web服务器所管理的资源(JSP、Servlet、静态图片或者静态html文件进行拦截,从而实现特殊的功能)
Filter入门:
1.第一步编写一个实现类Filter接口
2.第二部对过滤进行配置
FilterChain对象的概述:
1.FilterChain过滤器链:在一个web应用中,可以开发编写多个Filter,这些Filter组合起来称为是一个过滤器链。
Filter生命周期:
1.创建:web服务器启动的时候,web服务器创建Filter实例对象。并且调用其init方法进行初始化(Filter对象只会创建一次,init方法也只会执行一次)
2.每次Filter拦截的时候。都会执行doFilter的方法。
FilterConfig对象的概述:
1.作用:用来获得Filter的相关的配置对象
2.方法:
文件上传:
1.文件上传是将本地的文件通过流写入到服务器的过程
2.文件上传的技术:
1.JSPSmartUpload:应用在jsp上的文件上传和下载组件。
2.FileUpload:应用在java环境的文件上传的功能。
3.Servlet3.0:提供文件上传的功能。
4.Struts2:提供文件上传的功能。
3:文件上传的要素:
1表单的提交方式需要是post。
2.表单中需要有<input type="file">元素,需要有name和属性
3.表单 enctype=“multipart/form-date”
4.文件上传的API之DiskFileItemFactory:
1.构造方法:DiskFileItemFactory( )、DiskFileItemFactory(int sizeThreshold, File repostory)
2.sizeThreshold:设置文件上传的缓冲区的大小,默认值为10kb。
3.repostory:用来文件上传过程中产生临时文件存放的路径。
5.文件上传的API之ServletFileUpload:
1.构造方法:ServletFileUpload( )、ServletFileUpload(FileItemFactory fileItempFactory)
2.isMultipartContent:判断表单的enctype属性是否正确,返回boolean
3.parseRequest:用来解析request对象,返回一个List集合
6.文件上传的API之FilemItem:
1.isFormFiled():用来判断表单是上传项还是普通项,返回boolean,如果为true代表普通项
2.getFiledName():用来获得普通项的名称
3.getString():用来获得普通项的值
4.getName():用来获得文件名的方法
5.getInputStream():用来获得文件内容的方法
6.delete():删除文件上传时的临时文件