目录
3、获取请求参数* String password=request.getParameter("password");* 得到标签中name 为password 的值
2、out输出和response.getWriter输出的区别
前言内容
一、Servlet的生命周期 1、执行构造器方法 2、执行init初始化方法 3、执行service方法,每次访问对应请求都会被调用 4、执行destroy销毁方法,在web工程停止时候销毁
二、获取请求 创建HttpServletRequest 对象获取 三、通过继承HttpServlet实现Servlet程序 1、编写一个类去继承HttpServlet类 2、根据业务需求重写doGet或doPost方法 3、到web.xml中的配置Servlet程序的访问地址 四、关系 接口Servlet <---类 GenericServlet <--类 HttpServlet <-- 自定义的Servlet
一、重写init()
一定要调用super.init()方法
二、ServletContext 接口
表示Servlet上下文对象, 一个web工程,只有一个ServletContext对象实例 ServletContext对象是一个域对象 是可以像Map一样存储数据的对象叫域对象,这里的域指的是存储数据的操作范围。
三、ServletContext类的四个作用
1、获取web.xml中配置的上下文参数context-param 2、获取当前的工程路径,格式:/工程路径 3、获取工程部署后在服务器硬盘上的绝对路径 4、像Map一样存储数据
四、常用的请求头信息
Accept:表示客户端可以接收的数据类型 Accpet-Languege:表示客户 User-Agent:表示客户浏览器的信息 Host:表示请求时的服务器ip和端口号
五、请求类型
1、GET
form标签 method=get a标签 ling标签引入css Script标签引入js文件 img标签引入图片 iframe引入html页面 在浏览器地址中输入地址后敲回车
2、POST请求
form标签 method=post
六、常用的响应码
1、200 表示请求成功
2、302 表示请求重定向
3、404 表示服务器已经收到了,但是数据不存在(请求地址错了)
4、500 表示服务器已经收到请求,但是服务器内部错误(代码)
七、配置文件和创建类(正式部分)
idea可以直接创建
//IDEA直接生成Servlet
//再配置web.xml
public class HelloServlet3 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("in HelloServlet3 ");
request.getRequestDispatcher("/into.jsp").forward(request,response);//转发
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("HelloServlet3:POST");
}
}
配置weib.xml
<!-- servlert 给服务器配置servlet程序-->
<servlet>
<servlet-name>HelloServlet3</servlet-name>
<!-- 对应类,目标路径-->
<servlet-class>com.main.Server.HelloServlet3</servlet-class>
</servlet>
<servlet-mapping>
<!-- 告诉服务器,我当前配置的地址给哪个servlet程序使用-->
<servlet-name>HelloServlet3</servlet-name>
<!-- 请求路径,当有这个请求时候调用对应的Servlet 路径 http://ip:port/工程路径/hello-->
<url-pattern>/hello3</url-pattern>
</servlet-mapping>
八、HttpServletRequest 类
作用:每次只要有请求进入Tomct服务器,Tomcat服务器就会把请求过来的HTTP协议信息拆解解析封装好到Request对象中 然后传递到service方法(doGet和doPost中给我们使用) 常用方法
req.getRequestURI(); //获取请求的资源路径
req.getRequestURL(); //获取请求的绝对路径
req.getRemoteHost(); //获取客户端的ip地址
req.getHeader(); //获取请求头
req.getParameter(); //获取请求的参数
req.getParameterValues(); //获取请求的参数(多个值的时候使用)
req.getMethod(); //获取请求的方式(GET、Post)
req.setAttribute(); //设置请求域数据
req.getAttribute(key); //获取请求域数据
req.getRequestDispatcher(); //获取请求转发对象
九、HttpServletResponse 类
和HttpServletRequest一样,每次请求进来,Tomcat服务器都会创建一个Respnse对象传递给servlet程序去使用。 HttpServletRequest表示请求过来的信息,HttpServletResponse表示所有响应的信息 如果需要设置返回给客户端的信息,都可以通过HttpServletResponse对象来进行设置
1、两个输出流
resp.getOutputStream(); //常用于下载(传输二进制数据)字节流 * resp.getWriter(); //常用于回传(常用) 字符流 * 两个流同时只能使用一个
resp.setContentType("charset=UTF-8"); //设置编码
2、请求重定向
方式一:
RequestDispatcher requestDispatcher= request.getRequestDispatcher("/texte2.html"); * requestDispatcher.forward(request,response); //走向 支持流式结构: request.getRequestDispatcher("/texte2.html").forward(request,response); //走向
不能访问外部URL
浏览器地址没有变化 对服务器只是一次请求 共享域数据,
浏览器地址不发生改变
方式二:
resp.sendRedirect("http://localhost:8080/untitled_Web_exploded/");直接输入请求地址
3、获取请求参数
* String password=request.getParameter("password");
* 得到标签中name 为password 的值
十、jsp
1、language jsp翻译后的语言文件,只支持java 2、contentType jsp返回的数据类型是什么 3、pageEncoding 当前jsp页面文件本身的字符集 4、import 跟java中一样,用于导包 两个属性是给out输出流使用的 5、autoFlush 设置当out输出流缓冲区 满了之后,是否自动刷新缓冲区。默认值是true 6、buffer 设置out缓冲区的大小。默认是8kb 7、errorPage 设置当jsp出现错误时候跳转的路径 errorPage ="/err.jsp" 8、isErrorPage 设置当前jsp页面是否是错误信息页面。默认是false。 9、session 设置访问当前jsp页面,是否回创建HttpSession对象,默认是true 10、extends 设置jsp翻译出来的java类默认继承的类
<%@ page contentType="text/html;charset=UTF-8"
language="java" %>
11、 jsp中的脚本
(1)、声名脚本
<%! 声名java代码 %>
作用可以给jsp翻译出来的java类定义属性和方法甚至是静态代码块。内部类等
(2)、表达式脚本
<%= 表达式 %>
作用:在jsp页面上输出数据
特点 所有的表达式脚本都会被翻译到_japService方法中 表达式脚本都会被翻译成为out.print() 由于表哒式脚本翻译的内容都在_jspService()方法中,所以_jspService()方法中的对象都可以直接 使用 不能以 ; 号结束
(3)、代码脚本
<% java语句%>
作用:可以在jsp页面中,编写我们自己需要的功能 (写的是java语句)
if语句 for循环 翻译后java文件中_japService方法内的代码都可以写 特点:代码脚本翻译之后都在_jspService中 代码脚本由于翻译到_jspService()方法中,所以在_jspService()中的现有对象都可以直接使用 还可以多个脚本块组合成完整的java语句,合理利用{}可以套html标签写 代码脚本内可以使用表达式脚本<%= 表达式 %>
脚本语句的生命周期 :不管这三个代码脚本被创建了多少段,每个脚本本质上是一大段,每种脚本间的数据在段块中共享
十一、jsp的九大内置对象
request 请求对象 response 响应对象 pageContext jsp的上下文对象 session 会话对象 application ServletContext对象 config ServletConfig 对象 out jsp输出流对象 page 指向当前jsp的对象 exception 异常对象 isErrorPage=true 才能使用
1、 四个域对象:
pageContext (PageContextImpl 类)、 当前jsp页面的范围内有效 request (HttpServletRequest 类)、 一次请求内有效 session (HttpSession类)、 一个会话内有效(打开浏览器访问服务器,直到关闭浏览器) application (ServletContext类) 整个web工程范围内有效(只有web工程停止,数据都在)
在jsp中直接能使用它们来进行会话
域对象是可以像Map一样存取数据的对象。四域对象功能一样,不同的是它们对数据的存取范围 使用优先顺序是:pageContext-->request-->session-->application
2、out输出和response.getWriter输出的区别
response中表示响应,我们经常用于设置返回给客户端的内容(输出) out也是给用户做输出使用的 out