Javaee学习笔记(二)

接上一篇,Javaee学习笔记(一)

构建一个servlet项目

  1. 启动Eclipse
  2. 选择File – New – Dynamic Web Project 命名为MyServlet
  3. 右键创建好的文件夹,选择File – New – Servlet
  4. 按下图填写后,点击Finish

在这里插入图片描述

servlet的主要功能在于 交互式地浏览和修改数据,生成动态的Web内容。

本质上规范了服务器认知代码的接口规范,广义上实现了该接口的类都可以叫servlet

Web容器处理HTTP请求:
在这里插入图片描述
使用流程:

  1. 创建普通的java类并继承HttpServlet
  2. 覆写 service 方法
  3. 在 service方法中书写逻辑代码即可
  4. 在 webContent下的WEB-INF文件夹下的web.xml文件中配置servlet (安全性)

Servlet生命周期

  1. 从第一次调用到服务器关闭;
  2. 如果Servlet在web.xml里配置了load-on-startup,则生命周期为 从服务器启动到服务器关闭;(数字表示加载顺序)
  3. init方法是对servlet进行初始化的一个方法,会在servlet第一次加载进行存储时执行。
  4. destroy方法时在servlet被销毁时执行,也就是服务器关闭时。

doGet方法和doPost方法
doGet:处理 get 方式的请求
doPost:处理 post 方式的请求
service方法:可以处理 get / post 方式的请求,如果servlet中有service方法,会优先调用service方法对请求进行处理。

注:如果在覆写的service方法中调用了父类的service方法,

super.service(arg0,arg1)

则service方法处理完后,会再次根据请求方式响应的doGet和doPost方法执行。所以,一般情况下我们是不在覆写的service中调用父类的service方法的,避免出现405的错误。

Servlet的常见错误

  • 404错误:资源未找到
    原因一:在请求地址中的servlet的别名书写错误;
    原因二:项目名称拼写错误

  • 500错误:内部服务器错误导致
    错误一:
    java.lang.ClassNotFoundException:com.bjsxt.Servlet.Mothod
    解决:在web.xml中校验servlet类的权限路径是否拼写错误。
    错误二:
    因为service方法的代码执行错误导致
    解决:根据错误提示对service方法体中的代码错误进行更改。

  • 405错误:请求方式不支持
    请求方式和servlet的方法不匹配

JSP的九大内置对象

  • out

  • request

  • response

  • session

  • application

  • pageContext

  • config

  • page

  • exception

    request 请求对象

    存储客户端向服务端发送的请求信息。

    服务器接收到浏览器的请求后,会创建一个request 对象,对象中存储了此次请求相关的请求数据。服务器在调用servlet 时会将创建的request 对象作为实参传递给servlet的方法,比如:service方法。

    使用:req.
    注意:如果要获取的请求数据不存在,不会报错,返回null。
    获取请求头数据

     	 - String getMethod()  获取请求方法
     	 - String getRequestURL() 获取请求url
     	 - String getRequestURI() 获取uri
     	 - String getScheme() 获取协议
    

    获取请求行数据

      - String getHeader(String name) 获取指定请求行信息
      - Enumeration getHeaderNames() 获取所有的请求行的键的枚举 得到Object对象
    
    Enumeration e = req.getHeaderNames();
    while(e.hasMoreElement()){
    	String name = (String) e.nextElement();
    	String value2 = req.getHeader(name);
    	System.out.println(name+":"+value2);
    	}
    

    获取请求用户数据
    get/post 方式返回结果一样,发数据和取数据的key要一致,否则会乱码。

      - String getParameter(String name) 根据请求的字段名key,返回字段值value
    

    注:
    request对象由tomcat服务器创建,并作为实参传递给处理请求的servlet的service方法。

     	 - String getHeaderNames() 返回请求头的键名的枚举集合
     	 - String getParameter(String name) 根据请求的字段名key,返回字段值value
     	 - String[ ] getParameterValues(String name) 根据请求的字段名key,返回多个字段值value
     	 - getParamaterNames() 返回所有用户请求数据的枚举
     	 - void setCharacterEncoding("编码格式 utf-8") 设置请求编码(tomcat7以前默认iso-8859-1,tomcat8后面改为了utf-8) //设置post方式
     	 - getRequestDispactcher().forward(request,response); 请求转发的方式跳转页面 A-->B 可以获取数据,且地址栏没有改变 //(仍保留转发时的页面)
     	 - servletContext getServerContext() 获取项目的ServletContext对象
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独忘机

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值