回顾
1三要素是什么?
入口(login.html) 处理(LoginServlet.java) 出口 (success.jsp)
2如何访问servlet
http://IP:port/project/urlpattern
urlpattern ---->web.xml中找
3 request 和 response的区别?
Request请求 Broswer---->Tomcat login.html--->LoginSevlet.java
Response返回 Tomcat---->Broswer
4 doGet 和 doPost的区别?
doGet <a href=url> 超链接用的默认方式 get 不解中文决乱么
<form action=url method=get >
明文传递方式 浏览器中可以看到传递的信息
不安全,并且数据量大的时候会缺损数据
doPost <form action=url method=post > 解决中文乱码
密文传递方式 浏览器看不到传递的信息
安全,并且数据量大的时候不会缺损数据
5如何解决乱码问题?
Request请求有乱码
request.setCharacterEncoding("UTF-8");
Reponse返回有乱
response.setCharacterEncoding("UTF-8");
6 如何取得请求中的值 ?
String value=request.getParameter(“控件名”); 单个值
String [] values=request.getParmeterValues(“控件名”); 同名多个值
7 常见的错误:404 、500?
404 路径错误---解决思路 跟踪路径
500 代码错误---解决思路 jsp/servlet中代码错误
获取不到值null 在console里面去找到错误的位置。
8 servlet中得到流的方法?
字符流 response.getWriter( )----->PrintWriter
字节流 response.getOutputStream()-->OutputStream
9 如何跳转到出口?
//跳转并且可以传递数据
request.getRequestDispatcher("success.jsp").forward(request, response);
//重新定向 跳转不传递数据
//response.sendRedirect("success.html");
10如何将数据传递到出口?
//保存数据
request.setAttribute("name", username);
request.setAttribute("password", pwd);
//获取数据
用户名是:${ name} ,密码: ${password}。
11 Servlet的生命周期
Servlet的生命周期是由tomcat服务器来控制的。
1 构造方法:
创建servlet对象的时候调用。默认情况下,第一访问servlet就会创建servlet对象只创建一次。说明servlet对象在tomcat中是单实例的。
2初始化 init方法
当创建完servlet对象的时候会调用init()方法,只调用一次。
3 调用服务 service 方法 其中就包含doGet doPost等方法
每次发送请求的时候调用。可以调用n次。
4 销毁 destory 方法
销毁servlet对象的时候调用,停止服务器或者重新部署的web项目的时候销毁servlet就会调用destory方法
12 Servlet时序图
13 servlet自动加载
在web.xml中加入
<load-on-startup> 1</load-on-startup>
里面的数字越小加载级别越高
当tomcat启动的时候,就去运行web.xml解析里面的内容,当发现有自动加载的数据时候,就会运行加载。
<servlet> <servlet-name>sl</servlet-name> <servlet-class>com.bw.servlet.LoginServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> |
14 ServletConfig 对象
主要是加载servlet的初始化参数,在web应用中可以存在多个ServletConfig对象
<servlet> <servlet-name>sl</servlet-name> <servlet-class>com.bw.servlet.LoginServlet</servlet-class> <init-param> <param-name>username</param-name> <param-value>godyang</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>123456</param-value> </init-param> </servlet> |
15 ServletContext对象
上下文对象,表示当前的web应用(项目)环境。一个web应用只有一个ServletContext对象
上下文参数配置 它是全局的 所有的servlet都可以访问
<context-param> <param-name>ecode</param-name> <param-value>UTF-8</param-value> </context-param> |
// 获取上下文对象 ServletContext sc = this.getServletContext(); String contextParamValue = sc.getInitParameter("ecode"); System.out.println("contextParamValue=" + contextParamValue); |
//项目路径 String path=sc.getContextPath(); System.out.println("path="+path); //文件发布后(tomcat/webapps)的真实路径 String realPath=sc.getRealPath("counter.txt"); System.out.println("realPath="+realPath ); //获取文件流 InputStream is=sc.getResourceAsStream("C:\Tomcat\webapps\webThree\WEB-INF\classes\counter.txt"); |