关于servlet的总结和个人理解

servlet@nana

servlet的概念和理解

目录

xml文件的解析过程
http协议
tomcat讲解
web2.5和3.0以上版本的区别
servlet的生命周期
获取客户端提交参数和响应客户端的参数
请求转发和重定向
get和post方法的区别
cookie和session
filter、servlet和listener
1.xml解析
/**

     * 通过Dom4j解析xml文件

     *   1.导入相关的jar包

     *   2.获取SAXReader对象

     *   3.通过SAXReader中的reader方法加载需要解析的xml文件

     *   4.通过第三步获取Document对象获取相关的xml文件信息

     * @param args

     * @throws DocumentException 

     */

    public static void main(String[] args) throws DocumentException {

            // 1.获取SAXReader对象

            SAXReader reader = new SAXReader();

            // 2.加载需要解析的xml文件  read 完成解析和数据的封装

            Document doc = reader.read(new File("xml/student.xml"));

            // 3.从Document对象中获取相关的数据  root

            Element root = doc.getRootElement();

            System.out.println(root.getName());

            // 获取第一个子节点

            Element student = root.element("student");

            // 获取节点的id属性

            Attribute id = student.attribute("id");

            System.out.println(student.getName()+" "+id.getValue());

            // 获取student节点下面的 name age  address节点的内容

            Element name = student.element("name");

            Element age = student.element("age");

            Element address = student.element("address");

            System.out.println(name.getTextTrim()+" "+age.getTextTrim()+" "+address.getTextTrim());

            

            // ---------通过循环的方式获取所有的节点----------

            List list = root.elements();

            for (Element element : list) {

                    System.out.println(element.getName());

            }

    }

2.http协议
HTTP(HyperTextTransferProtocol)是超文本传输协议;
HTTP 协议定义服务器端和客户端之间文件传输的沟通方式,HTTP协议采用了请求/响应模型。
客户端的向服务器请求一个文件。 最基本的过程是:
A.客户端连接一个主机;
B.服务器接收连接,
C.客户端请求一个文件,
D.服务器发送一个应答.

3.tomcat
安装
启动:bin/startup.bat(在bin目录下)
访问: http://localhost:8080
修改端口号:vim servser.xml中的port端口号即可

4.web2.5和3.0以上版本的区别
A.2.5只支持xml文件配置servlet
B.3.0以上的版本支持注解配置@webservlet("/servlet")

5.servlet的生命周期
public class ServletDemo01 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req,resp);
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    System.out.println("我是post提交方式,提交我的请求");
}

@Override   //生命周期,初始化
public void init(ServletConfig config) throws ServletException {
    super.init(config);
}

@Override   //生命周期,程序启动执行一次
public String getServletInfo() {
    return super.getServletInfo();
}

@Override     //生命周期,销毁
public void destroy() {
    super.destroy();
}

6.获取客户端提交参数和响应客户端的参数
A.获取客户端提交的参数:
如前端页面提交登录的username和password:
string username=request.getParameter(“username”)
string password=request.getParameter(“password”)
B.响应客户端参数
如给前端页面返回一个登陆成功或者登录失败的提示msg
这时需要:
Msg msg=new msg(1,“密码错误”);
response.getWrite().print(msg);
把错误信息返还给前端,前端通过ajax或者别的方式获取错误提示

7.请求转发和重定向
A.请求转发:request.getRequestDispatcher( “/XXX”).forward(req,resp);
B.重定向:response.sendRedirect("/XXXX")
7.1二者本质区别:
请求转发是一次请求一次响应,而重定向是两次请求两次响应。
请求转发地址栏不会变化的,重定向地址栏发生变化。
请求转发路径不带工程名,重定向需要带工程名路径。
请求转发只能在本网站内部,重定向可以定向到任何网站。
7.2

  1. getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括。
  2. getPageInfo():与getServletPath()获取的路径互补,能够得到的是“url-pattern”中*d的路径部分
  3. getContextPath():获取项目的根路径
  4. getRequestURI:获取根路径到地址结尾
  5. getServletContext().getRealPath(“/”):获取“/”在机器中的实际地址
  6. getScheme():获取的是使用的协议(http 或https)
  7. getProtocol():获取的是协议的名称(HTTP/1.11)
  8. getServerName():获取的是域名(xxx.com)
  9. getLocalName:获取到的是IP

8.get和post方法的区别:
A.get方法提交的数据拼接在地址栏url上,post方法提交的数据存储在body中;
B.get方法使用的是doget方法,post提交方式使用的是dopost方式;
C.get方法处理中文乱码的方式是:
request.setCharacterEncoding(“utf_8”);
post方法处理中文乱码的方是:
response.setContentType(“text/html;charset=utf_8”)
D.get方法url大小不能>1kb,post方法的url大小不能超过2kb
E.get 的速度比post快;

9.cookie和session
cookie是文本信息,把客户端的信息保存在客户的浏览器中,当再次访问此网址时,浏览器会把cookie和用户信息交给浏览器,检查该cookie从而检查用户的状态。
session客户端浏览器访问服务器时,服务器把客户端信息保存到服务器中,当客户端浏览器再次访问时,直接在session中查询客户端状态即可。
cookie和session的区别:
A.存放位置:cookie信息存储在客户端浏览器上,session信息存储在服务器上;
B.安全性:cookie不如session安全;
C.session会保存在服务器上一段时间,但是为了性能考虑,除了用户登录信息等重要信息以外,其他信息应该放在cookie中。
D.单个cookie可以保留的数据不超过4kb,部分网站限制一个站点只能保存一个cookie。

10.filter、servlet和listener
10.1 filter和servlet的区别:
从四个方面来讲:
概念、生命周期、职责和运行过程
A.概念:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态地生成web页面,它工作在客户请求和服务器响应的中间层;
filter:filter是一个可以服用的代码片段,可以用来转换http请求、响应头信息,filter不能像servlet那样产生请求和响应,只是对某一个资源的请求或者相应的修改。
B.生命周期:
servlet:1.请求第一次到来是执行init初始化方法,如果配置了loadOnstartup方法就会在启动的时候执行方法;
2.执行service,根据提交的方式采用doget或者dopost方法
3.当服务器重启或者关闭时执行destory方法
filter:1.当服务器开启式,执行init初始化方法;
2.当满足条件的请求到来时执行doFilter方法,对验证通过的请求执行放过chain.doFilter(req,resp),没有通过验证的方法执行拦截
3.当服务器重启或者关闭时,执行destory方法
C.职责:
filter主要用来字符编码过滤、验证用户登录、禁止页面缓存
servlet:动态生成web项目

你可能感兴趣的:(web)