- 前言
- 一、web开发概述
- 二、web开发环境搭建
- 三、创建发布web项目
- 四、Servlet概述
- 五、Servlet创建和使用
- 六、Servlet生命周期
- 七、http
- 7.1http协议
- 7.2http请求
- 7.2.1http请求概述
- 7.2.2两种http请求方式
- 7.2.3HttpServletRequest
- 7.3http响应
- 7.3.1http响应概述
- 7.3.2HttpServletReponse
- 7.3.3向浏览器动态生成网页内容
- 八、ServletContext
- 九、session
- 9.1session概述
- 9.2session对象生命周期
- 十、过滤器
- 10.1过滤器概述
- 十、监听器
- 总结
前言
Servlet 是运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和 HTTP服务器上的数据库或应用程序之间的中间层。使用 Servlet可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。本章内容详细讲解了web开发的相关内容以及servlet相关内容的配置使用,是JAVAEE开发的重中之重。
一、web开发概述
web:在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。javaweb:使用java技术开发web页面。
Web服务器:接收客户端的请求,给客户端作出响应。学习web开发,需要先安装一台web服务器,将开发好的web项目 部署在web服务器中供外界访问。
web程序: 所有的程序部署在服务器端,通过浏览器远程访问.
服务器:
提供服务 接收请求 响应
服务器: 广义 软件+硬件
狭义 软件(程序) 放置文件(项目) 供英特网中的其它电脑访问.
服务器<==>web容器<==>中间件(连接用户请求 与 程序)
二、web开发环境搭建
在小型的应用系统或者有特殊需要的系统中,可以使用一个免费的Web服务器: Apache 的Tomcat,该服务器支持全部JSP以及Servlet规范.
Tomcat服务器由Apache提供,开源免费。由于Sun和其他公司参与到了Tomcat的开发中,所以最新的JSP/Servlet规范总是能在Tomcat中体现出来。
Tomcat 的下载与安装
1.官网下载解压 下载地址:http://tomcat.apache.org/
2.配置JAVA_HOME环境变量 D:ProgramFilesJavajdk1.8.0_261(TOMCAT根据java_home去查找jdk安装位置)
3.在tomcat的bin目录 双击运行 startup.bat命令 启动tomcat
- bin 放着各种命令 startup.bat命令 shutdown.bat
- conf 放着配置文件 列如server.xml 修改端口号
- lib tomcat运行所需要的jar包
- logs 运行产生的日志文件
- temp 临时缓存文件
- webapps 部署web程序的目录
- work 工作目录
4.访问 IP+端口
三、创建发布web项目
在idea中创建一个基本的java项目
右键 add webframework 变为web项目
项目
src java代码
web 配置文件 网页代码
部署项目
1.手动部署 自己把项目中的代码粘贴到服务器中, 平时开发不用
2.自动部署 在idea中集成tomcat
Web项目结构
四、Servlet概述
Servlet是Server Applet的简称,意思为用Java编写的服务器端的程序,它运行在web服务器中。web服务器负责Servlet和客户的通信以及调用Servlet方法,Servlet和客户通信采用“请求/响应”的模式。
Servlet的作用:
1.接收用户发送的请求
2.调用其他的java程序来处理请求
3.根据处理结果,服务器将响应返回给客户端
五、Servlet创建和使用
url-pattern配置模式:"/"代表当前web应用的根目录
精确匹配 例如:/test
匹配任意的url 例如:
//req.setCharacterEncoding("utf-8");
PrintWriter out=null;
resp.setContentType("text/html; charset=utf-8");
out=resp.getWriter();
int result=0;
try {
result=new RegisterDao().save(req.getParameter("account"),req.getParameter("password"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
if(result==0){
out.println(0);
}else{
out.println(1);
}
}
八、ServletContext
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的 ServletContext对象。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此 Servlet对象之间可以通过ServletContext对象来实现数据交互,存储一些全局信息。
常用方法
name
jim
public void init(ServletConfig config) throws ServletException {
ServletContext context=config.getServletContext();
System.out.println(context.getInitParameter("name"));
context.setAttribute("age",12);
}
九、session 9.1session概述
Session对象是javax.servlet.http.HttpSession的实例
在第一次向servlet中发起请求时, 在服务器端,由服务器创建一个session对象,完成会话期间的管理
会话: 客户端浏览器和服务器交互的整个过程, 从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束
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 session=req.getSession();
session.setAttribute("user",user);
session.invalidate();
9.2session对象生命周期
会话对象是容器创建的,并保存在容器中
1.客户端连接后长时间不操作,维护这些会话对象
需要很多资源,服务器会在默认时间后销毁这些对象,多数容器默认30分钟销毁
2.调用HttpSession中的invalidate()方法销毁
3.服务器关闭时销毁
设置会话时间
1.在web.xml中进行配置,修改默认时间
例:修改为50分钟销毁
50
2.HttpSession接口中的setMaxIntervalTime设置,以秒为单位,如果 参数是负数,表示永远不失效
将会话的有效时长设置为2小时
session.setMaxInactiveInterval(2*60*60)
有若干客户端与服务器连接,服务器会为每个客户端的一次会话创建一个会话对象
十、过滤器 10.1过滤器概述
过滤器:位于客户端和web应用程序之间,用于检查和修改两者之间流过的请求,在请求到达Servlet/JSP之前,过滤器截获请求。
作用:
在客户端的请求访问后端资源之前,拦截这些请求。
ServletAPI 中,与过滤器有关的API共有三个接口,分别是
● Filter ● FilterChain ● FilterConfig
Filter接口
1. init(FilterConfig filterConfig)方法:对filter对象进行初始化,只调用一次, FilterConfig可以获得filter的初始化参数。
2.doFilter(ServletRequest request, ServletResponse response, FilterChain chain):过滤器必须要实现的方法,对request或者response进行预处理(例如utf-8编码处理)。FilterChain可以把处理后的对象传递给下一个资源。
3.destroy():该方法在容器销毁过滤器对象前被调用
FilterChain接口
1.doFilter(ServletRequest request,ServletResponse response):把处理后的对象传递给下一个资源
FilterConfig接口
作为Filter接口中的init方法的参数使用
1.getInitParameter(String name),该方法用来获得过滤器的初始化参数值。
public class EncodeFilter implements Filter {
public static String encode;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
encode=filterConfig.getInitParameter("encode");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding(encode);
filterChain.doFilter(servletRequest,servletResponse);
}
}
encode
com.ffyc.firstweb.filter.EncodeFilter
encode
utf-8
encode
/back/*
empty
com.ffyc.firstweb.filter.IsEmptyFilter
empty
/back/*
● 过滤器用来实现通用的功能,减少代码冗余,提高可维护性
● 一个过滤器可以配置给多个资源使用
● 一个资源也可以配置多个过滤器,按照配置顺序调用
十、监听器
Servlet API中定义了监听器接口,用来监听不同的事件类型
public class Listen implements ServletContextListener, ServletRequestListener, HttpSessionListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("上下文监听器创建");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("上下文监听器毁灭");
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
System.out.println("请求监听器创建");
}
@Override
public void requestDestroyed(ServletRequestEvent sre) {
System.out.println("请求监听器毁灭");
}
@Override
public void sessionCreated(HttpSessionEvent se) {
System.out.println("会话监听器创建");
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
System.out.println("会话监听器毁灭");
}
}
创建监听器类,实现监听器接口,在web.xml文件中配置监听器类。
com.ffyc.firstweb.listener.Listen
总结
servlet是业务逻辑层的一个重要内容,起到了连接表现层和数据访问层的关键作用。本章的重点内容是web开发概述以及servlet的相关内容,包括http、servlet的生命周期、session会话对象的生命周期、过滤器。作为java开发人员,必须熟系web开发的流程,学好web开发的基本技术,为以后的框架学习打下坚实的基础。



