1.web程序
所有的程序都部署在服务器端,通过浏览器远程访问
服务器:
提供服务 接收请求 响应 服务器:广义: 软件+硬件 狭义:软件(程序) 放置文件(项目) 供因特网中的其他电脑访问 服务器-->web容器-->中间件(连接用户请求 与程序)
2.web环境搭建
安装服务器 apache提供的一款开源的服务器 tomcat 官网下载 解压 配置JAVA_HOME环境变量 (到java.jdk的路径) TOMCAT根据java_home去查找jdk安装位置 在tomcat的bin目录 双击运行 startup.bat命令 启动tomcat bin 放着各种命令 startup.bat命令启动 shutdown.bat命令关闭 conf放着配置文件 例如server.xml 修改端口号 lib tomcat运行所需要的jar包 logs 运行产生的日志文件 temp 临时缓存文件 webapps 部署web程序的目录 work 工作目录 访问 IP+端口/文件名
搭建完成
创建发布web项目
在ider中创建一个基本的java项目 右键 add webramework 变为web项目 项目 src java代码 web 配置文件 网页代码
发布方式
手动发布:自己把项目中的代码粘贴到服务器中,平时开发不用(淘汰)
自动发布:自动将web应用发布到web服务器下,需要在开发工具中集成tomcat进来
Servlet(JavaEE javaWEB)
servlet ==>server +apple---->用java编写的服务器端程序
它运行在web服务器中,web服务器负责Servlet和客户的通信以及调用Servlet方法,Servlet和客户通信采用"请求/响应"的模式。
作用: 1.接收用户发送的请求 2.调用其他的Java程序来处理请求 3.根据处理结果,服务器将响应返回给客户端
Servlet的常见和使用
1.创建一个类继承javax.servelt.http包下的HttpServlet 2.在web.xml文件中配置Servlet 3.运行Servlet程序 通过浏览器访问http:localhost:8080/helloword/配置的url-pattern 由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使用元素和 元素完成。
Servlet创建和使用-Servlet配置
元素用于注册Servlet 它包含由=有两个主要的子元素 和 分别用于设置Servlet的注册名称和Servlet的完整类名 一个 元素 用于映射一个已注册的Servlet的一个对外访问路径 它包含有两个元素: 和 分别用于指定Servlet的注册名称和Servlet的对外访问路径 url-pattern配置模式:"/"代表当前web应用的根目录 精确匹配 例如/test 访问http://10.43.11.143/myapp/test 匹配任意的url 例如 public class DemoServlet extends HttpServlet { public DemoServlet(){ System.out.println("DemoServlet"); } @Override public void init(ServletConfig config) throws ServletException { System.out.println("init"); } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("service"); } @Override public void destroy() { System.out.println("destroy"); } }
Servlet详细介绍
web开发流程
servlet的生命周期
package com.slg.firstweb.servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class DemoServlet extends HttpServlet {
public DemoServlet(){
System.out.println("DemoServlet");
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("init");
System.out.println( config.getInitParameter("name"));;//获得配置文件中的信息
System.out.println(config.getServletName());
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("service");
}
}
http协议
什么是HTTP?
超文本传输协议服务器传输超文本到到本地浏览器的传送协议 是互联网上应用最为流行的一种网络协议 用于定义客户端浏览器和服务器之间交换数据的过程。 HTTP是一个基于TCP/IP通信协议来传输数据。 HTTP是一个属于应用层的协议,由于其简捷,快速 的方式 适用于分布式超媒体信息系统
http请求
客户端连上服务器后,向服务器请求某个web资源 称之为客户端向服务器发送了http请求 请求包括: 请求行 请求头 请求体 请求行包含http请求方式,请求资源名称,http版本 请求头包含主机地址,以及客户端的一些环境信息 以键值对的形式传递。 请求体代表着浏览器在pos请求方式中传递给服务器的参数 请求体中参数以键值形式传递 多个用&连接,服务器接收到后在解析 例如:username=admin&userpwd=123
两种http的请求方式
GET方式: 超链接访问,默认是GET方式 form提交,不指定method,默认为GET方式 POST方式: form提交,指定method="POST"
Get方式与Post方式的区别
Get方式主要是从服务器获取信息 Post方式主要是向服务器提交信息 Get方式在通过URL提交数据,数据可在URL中看见 Post方式数据在URL中不可见,数据放置在请求体中提交 Get方式提交数据大小受限制(一般为1kb,与浏览器有关) Post方式则没有限制
我的第一个web程序
列表
post方式
我的第一个web程序
列表
HttpServletRequest
HttpServletRequest是ServletRequest的子接口 HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。 请求和响应是Web交互最基本的模式,在Servlet中 用HttpServletRequest来表示请求。 HttpServletRequest:封装了请求的信息,可以从中获取任何请求信息。
获取客户机/服务器信息
getMethod() 得到客户机请求方式 getScheme() 请求协议 getRemoteAddr() 返回发出请求的客户机的IP地址 getServletName() 获得服务器名(ip域名) getServletPort() 服务器端口
request获取请求参数
getParameter(name) ---String通过name获得值 getParameterValues ---String[ ] 通过name获得多值 整理中文乱码 post setCharacterEncoding(编码格式)
HttpServletReponse
HttpServletResponse是ServletResponse的子接口 web服务器接收到客户的http请求 会针对每次一请求 分别创建一个代表响应的HttpServletResponse对象 HttpServletResponse对象代表响应。
向浏览器动态生成网页内容
用getWriter()获得一个Print Writer字符输出流输出数据,response会默认以ISO8859-1将需要输出到浏览器的字符进行解码,如果输出的字符在ISO8859-1中不存在,就会导致乱码问题。
response.setContetnType(“text/html;charset=utf-8”);方法可以同时设定response所使用的字符集编码和浏览器打开所用的字符集编码。
ServletContext
web容器在启动时,它会为每个web应用程序都创建一个对应的ServletContext对象。
由于一个web应用中所有Servlet共享一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现数据交互,存储一些全局信息。
常用方法:
getInitParameter("name")
获得当前应用的初始化参数
setAttribute("attrname",value)
设置Servlet Context属性并赋值
getAttribute("attrname")
获得ServletContext属性指定值
removeAttribute("attrname")
删除ServletContext指定属性
getRealPath(filename)
获得文件的绝对路径
getContextPath()
获得当前应用的根目录
session
Session对象是javax.servlet.http.HttpSession的实例
它在第一个JSP页面被装载时自动创建,完成绘画期管理。
从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为这一个会话。
Servlet API中,定义了HttpSession接口,用来封装会话对象。
HttpSession是接口,会话对象是web容器创建的,在Servlet中使用,HttpServletRequest中的方法获得会话对象。
public HttpSession getSession(); 获得跟当前请求相关的session,如果不存在session,就创建一个新的session对象返回。
使用session实现会话机制的过程
1.当容器创建一个新的HttpSession对象后,即生成一个随机数,称为会话ID,并将ID值封装成一个名字为JSESSIONID的session,返回给客户端。
2.调用request.getSession方法获得会话对象时,容器先从request中获取JSESSIONID值,根据JSESSIONID值查找到对应的会话对象,返回使用。
3.如果没有获取到JSESSIONID值,认为当前的请求没有相关联的会话对象,重复步骤1
HttpSession接口中定义了一系列的方法
| 返回值类型 | 方法名称 | 说明 |
|---|---|---|
| void | setAttribute(String key, Object value) | 以key/ value的形式保存对象值 |
| Object | getAttribute(String key) | 通过key获取对象值 |
| void | removeAttribute(String key) | 通过key删除属性 |
| int | getMaxInactiveInterval() | 获取session的有效非活动时间,以秒为单位 |
| void | setMaxInactiveInterval(int interval) | 设置session的最大非活动时间,以秒为单位,超时将被销毁 |
| String | getId() | 获取session对象的编号 |
| void | invalidate() | 设置session对象失效 |
| boolean | isNew() | 判断一个session是不是一个新创建的会话对象 |
会话对象的生命周期
会话对象是容器创建的,并保存在容器中,如果客户端连接到服务器后,却置之不理,不做任何操作,那么容器维护这些会话对象将占用很多资源,因此容器都会在默认时间内销毁会话对象,多数容器默认30分钟销毁会话对象。
除了根据有效时间使会话对象失效外,还可以调用HTTP Session中的invalidate方法,使会话失效,立即销毁会话对象。
会话对象(session)由谁创建的?
有若干个客户端与服务器连接,服务器会为每个客户端的一次会话创建一个会话对象。
过滤器的概念与作用
概念:
过滤器位于客户端和web应用程序之间 用于检查和修改两者之间流过的请求 在请求到达Servlet/JSP之前,过滤器截获请求 作用: 在客户端的请求访问后端资源之前 拦截这些请求
过滤器相关的API
servlet API,与过滤器有关的API共有三个接口,分别是:
Filter接口 是过滤器类必须实现的接口,该接口中有三个方法 init():该方法是对filter对象进行初始化的方法 仅在容器初始化filter对象结束后被调用一次 参数FIlterConfig可以获得filter的初始化参数 doFilter():该方法是filter进行过滤操作的方法 是最重要的方法,过滤器实现类必须实现该方法 方法体中可以对request和response进行预处理 其中FilterChain可以将处理后的request和response对象传递到过滤链上的下一个资源。 destroy():该方法在容器销毁过滤器对象前被调用。 FilterChain接口 该接口类型作为Filter接口中doFilter方法的参数使用 FilterChain接口中有一个方法 doFilter():该方法可以将当前的请求和响应传递到过滤链上的下一个资源 可能是下一个过滤器,也可能是目标资源 FilterConfig接口 该接口类型作为Filter接口中的init方法的参数使用 FilterConfig接口中有一个常用的方法: getInitParameter(String name)该方法用来获得过滤器得初始化参数值 在web.xml中,可以为每一个filter配置需要得初始化参数 与Servlet得类似 过滤器得初始化参数即可通过FilterConfig中的getInitParameter方法获取。
过滤器总结:
过滤器用来实现通用的功能,减少代码冗余,提高可维护性 一个过滤器可以配置给多个资源使用 一个资源也可以配置给多个过滤器,按照配置顺序调用
监听器
Servlet监听器是Servlet规范中定义的一种特殊类,用于监听
ServletContext、HttpSession和ServletRequest等域对象的创建与销毁事件,以及监听这些域对象中属性发生修改的事件。
监听器分类
按监听对象分类:
1.用于监听应用程序对象(ServletContext) 2.用于监听用户会话对象(HttpSession) 3.用于监听请求消息对象(ServletRequest)
按监听事件分类:
1.监听对象的创建和销毁的事件监听器 2.监听事件属性变更(添加,修改,移除)的监听器。
监听器接口
Servlet API中定义了监听器接口,用来监听不同的事件类型
ServletContextListener:上下文监听器 ServletContextAttributeListener:上下文属性监听器 ServletRequestListener:请求监听器 ServletRequestAttributeListener:请求属性监听器 HttpSessionListener:会话监听器 HttpSessionAttributeListener:会话属性监听器
创建监听器类
创建监听器类,实现监听器接口,在web.xml文件中配置监听器类。
监听器类全类名



