第二天知识点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二天知识点相关的知识,希望对你有一定的参考价值。

4.servlet的配置
<!-- 向服务器注册servlet -->
<servlet>
<!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
<servlet-name>AServlet</servlet-name>
<!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
<servlet-class>com.neuedu.servlet.AServlet</servlet-class>
</servlet>

<!-- servlet-mapping做请求映射 -->
<servlet-mapping>
<servlet-name>AServlet</servlet-name>
<!-- 请求映射是通过这个url-pattern来实现的! -->
<url-pattern>/BServlet</url-pattern>
</servlet-mapping>

注意点:
1.<url-pattern>标签中指定的映射路径不必和<servlet-name>标签指定的内容保持一致!
2.只有你浏览器地址栏中请求的url和我们这里<url-pattern>标签中的映射一致的时候,我们自定义的servlet类才会处理这个请求!

5.生命周期

servlet是由tomcat服务器来管理的!

servlet生命周期:是指servlet对象由产生到销毁的过程!

servlet生命周期涉及的几个方法:
1.构造器方法:只会在第一次访问这个servlet的时候调用一次,调用一次就说明servlet是单例的,但是servlet是多线程的,
非线程安全的,也就是说在servlet中我们尽量不要在service方法中操作全局变量!

2.init方法:init方法只会在第一次访问servlet的时候调用一次,对servlet对象进行初始化操作!

3.service:service方法会在每次访问这个servlet的时候都调用一次,而且我们的业务逻辑也是写在这个service方法!

4.destroy方法::destroy方法只会在我们的项目卸载的时候调用一次,也就是说在服务器关闭的时候会在服务器关闭的时候调用一次!

6.servletConfig

ServletConfig:是一个接口,一个ServletConfig对象只代表当前的servlet类的配置信息。
1) represent:
* <servlet>
<!-- servlet-name是给我们使用的,我们使用这个servlet-name对servlet进行配置! -->
<servlet-name>AServlet</servlet-name>
<!-- servlet-class指定全类名,给服务器使用,服务器使用这个全类名创建一个servlet实例【对象】 -->
<servlet-class>com.neuedu.servlet.AServlet</servlet-class>
</servlet>

2).如何获取:
由服务器创建,通过init方法的参数直接传递给我们,我们直接在init方法使用就可以了!

3)功能:
getServletName():获取当前servlet-name值,也就是获取servletname
getInitParameter("password"):获取servlet的初始化参数!
getServletContext():获取当前web应用!

7.ServletContext
1) 代表:代表的是当前web应用,也就是指的web.xml文件中的信息!

2)获取:通过ServletConfig对象的getServletContext()获取!

3) 功能:
1)getInitParameter:获取整个web应用的初始化参数,也就是如下:
<context-param>
<param-name>user</param-name>
<param-value>lisi</param-value>
</context-param>
2)获取资源的真实路径:getRealPath()
虚拟路径:http://localhost:8080/servlet-demo1/index.html
真实路径:E:\LHF teacher\marsworkspace\servlet-demo1\WebContent\index.html

8.MyGenericServlet
1.定义一个抽象类实现servlet接口,保留service方法不去实现,其余方法都实现了!
2.自定义抽象类子类,在web.xml文件中注册一下这个子类!

9.HttpServlet
public class AServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}

}

10.HttpServletRequest
1)代表:代表浏览器向服务器发送的请求报文
2) 获取:由tomcat服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法!
3) 功能:
getParameter()获取请求参数
getContextPath():获取当前项目名
setAttribute/getAttribute:本身就是一个域对象!
request.getRequestDispatcher("1.html").forward(request, response);可以实现转发功能!

11.HttpServletResponse
1)代表:服务器响应给浏览器的响应报文
2)获取:由服务器创建,然后做为参数传递给我们相对应的doGet或者doPost方法!
3)功能:
response.getWriter().println("<h3>hello world!</h3>");可以返回给浏览器一个页面或者一个页面片段!
response.sendRedirect("/servlet1/1.html"); :可以做请求的重定向

12.转发和重定向

转发:当浏览器向服务器发送请求的时候,服务器自己不处理,而是调用其它的web资源进行处理!


重定向:当浏览器向服务器发送请求的时候,服务器返回给浏览器一个特殊的响应,这个特殊的响应告诉浏览器再向另一个地址发送一个请求!

转发和重定向的区别:
发生在浏览器端还是服务器 浏览器的请求次数 浏览器地址栏是否发生变化 浏览器是否能够感知到
转发[request] 发生在服务器端 1 不发生变化 感知不到
重定向[response] 发生在浏览器端 2 发生变化 能感知到!

13.登录练习和注册练习


14.编码问题分析
通信双方在进行通信的时候,实际上是将通信的内容【信息】是按照一定的规则转化为二进制进行通讯的
而这个一定的规则就是字符的编码:ascii,gb2312,gbk,iso8859-1,utf-8;

在请求到达的时候,另一方就需要解码!

乱码原因:
通信双方的编码方式和解码方式不一致造成的,
解决办法:
统一通信双方的编码方式和解码方式,都使用utf-8编码!

编码分类:
请求编码
浏览器编码---》服务器解码iso8859-1
响应编码
服务器编码----》浏览器解码
服务器端默认使用的是iso8859-1编码,而浏览器默认使用的是gb2312,当然我们也可以在页面中告诉浏览器用什么编码方式!

15.请求编码
get请求:
统一浏览器和服务器端的编码格式为utf-8编码:在server.xml文件的connector标签中指定编码格式为utf-8编码:URIEncoding="utf8"
post请求!
我们可以在post方法中在第一次获取请求参数之前通过request.setCharacterEncoding("utf-8");来设置解码格式!

16.响应编码


17.路径问题:
①相对路径和绝对路径
绝对路径

相对路径

②常见的路径:
url-pattern:
转发的路径:
> 这两个的绝对路径由服务器解析,相对于项目的根目录
http://主机地址:端口号/项目名/

重定向的路径:
页面中的路径:
> 这两个路径有浏览器解析,相对于服务器的根目录
http://主机地址:端口号/

18.base标签

以上是关于第二天知识点的主要内容,如果未能解决你的问题,请参考以下文章

vue第二天

python学习第二天

第二天知识总结

第二天知识总结

第二天:函数异常抛出

python第二天,list和tuple