服务器中的Servlet

Servlet:

servlet是运行在服务器上的程序。能接受请求,并且用servlet中的service()方法做出响应。

JQuery发送异步get请求的方法和参数的含义

$.get(url,function(data){})
url:服务器地址,从该服务器获得数据
function(data){}: ,回调函数
请求成功,获得的数据就在函数的参数data中,data是一个json对象

简述从浏览器发请求到执行servlet类的过程:

  • 启动服务器

  • 启动过程中,加载解析web.xml(此时,如果web.xml有错,直接报错)

  • 浏览器通过地址栏,a标签发送一个http请求

  • 匹配web.xml中定义的url-pattern(如果请求之后是404,说明请求的路径在web.xml中没有定义)

  • 匹配到url,找对应servlet-name

  • 通过name找到servlet类路径

  • 通过类路径找到类文件,执行它(如果Java代码报错请求会报500)

首页问题:

在idea中运行servlet时,服务器启动,自动访问web文件夹下的名字为index.jsp或者index.html文件

可以通过web.xml设置访问的首页

<welcome-file-list> 
    <!-- 默认访问的index开头的文件,可以是jsp html --> 
    <!-- 在web下创建ok.html文件,此处指定ok.html文件,启动就会直接访问该文件 --> 
    <welcome-file>ok.html</welcome-file> 
</welcome-file-list>

映射细节:

  • 一个请求不能映射多个servlet类

  • 多个请求可以映射一个servlet类

url-pattern写法:

  • 绝对路径 (/路径名)

  • 后缀匹配(*.do)

  • 模糊匹配(/路径名/*)

  • 全部匹配(/*)

Servlet生命周期:

  • 创建(请求映射到这个类,才会创建该类对象,只创建一次,单实例,该类只有这一个对象)

  • 初始化(创建完成立即初始化,且初始化一次)

  • 服务(后续每次发送请求都会执行服务方法)

  • 销毁(服务器关闭立即销毁,或者是应用程序从服务器卸载是销毁)

HTTP请求 响应 状态码:

请求:请求行、请求头、请求正文(即发送到服务器的数据)

响应:响应行、响应头、响应正文

状态码:200(请求成功)、404(请求资源未找到)、500(服务器请求失败)、302(重定向)

GET 和 POST 的区别:

get 请求:通过地址栏发送数据,数据直接展现在url中,不安全,

​ 支持数据大小最大为4kb,传输快效率高。一般用来查询数据

post 请求:通过请求 body 发送 ,是隐式的,比较安全,

​ 携带的数据大小不限,效率低,一般向服务器发送数据,例如注册

Servlet 的另一种创建方式(httpservlet):【重点】

流程:

  • 创建类,继承 httpservlet

  • 按需重写方法 { doget()方法和 dopost()方法 }

  • 编写 web.xml

  • 编写 html 页面,发请求

  • 测试

接受请求具体的格式:

//第一步:页面    在web下新建html
<form action ="路径名字" method ="方法名字">
    用户名<input type="text" name="username"><br> 
    密码<input type="password" name="password"><br> 
    <!-- 单选框,需要设置value属性,后台服务器获得是value值 --> 
    性别<input type="radio" name="sex" value="1">男 
    <input type="radio" name="sex" value="2">女<br> 
    <!-- 复选框,需要设置value属性,后台服务器获得是value值 --> 
    爱好:<input type="checkbox" name="hobby" value="eat"> 吃饭 
    爱好:<input type="checkbox" name="hobby" value="sleep"> 睡觉 
    爱好:<input type="checkbox" name="hobby" value="hit"> 打豆豆<br> 
    生日: <input type="date" name="birthday"> 
    <!-- 下拉框,option需要设置value属性,后台服务器获得是value值 --> 
    地址:<select name="address"> <option value="henan">河南</option> 
    <option value="hebei">河北</option> <option value="beijing">北京</option> 
    </select> 
    <input type="submit" value="登录">
</form>
//第二步:写web.xml
<servlet> 
    <servlet-name>data</servlet-name> 
    <servlet-class>项目的路径(com.hehe.wss.lian)</servlet-class>
</servlet> 
<servlet-mapping> 
    <servlet-name>data</servlet-name> 
    <url-pattern>/路径名</url-pattern> 
</servlet-mapping>

第三步:接受请求的Servlet的响应

//第三步:接受请求的Servlet
import javax.servlet.*;
import javax.servlet.http.*; 
import java.io.IOException; 
import java.util.Enumeration;
public class MyServlet4 extends HttpServlet { 
   @Override 
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception { 
    // 如果,发送了get请求,直接将请求和响应交个post处理 doPost(request,response); }
            /**** @param request 使用该参数获得各种请求数据 
            * @param response 使用该参数做出响应 
            * @throws ServletException 
            * @throws IOException 
            */ 
     @Override 
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws Exception { 
              // 接收请求行(熟悉) 
              // 获得请求方法 
              String method = request.getMethod( ); 
              // 获得请求协议 
              String protocol = request.getProtocol( ); 
              // 获得请求路径 
              String requestURI = request.getRequestURI( ); // 资源标识符 
              StringBuffer requestURL = request.getRequestURL( ); // 资源定位符 System.out.println("method=" + method); System.out.println("protocol=" + protocol );
              // 接收请求正文(重点!!!) 
              // 获得input输入框的值,通过input的name属性值 
              //明文,暗文,单选,日期,下拉都使用getParameter获得数据 
              String username = request.getParameter("username"); 
              String password = request.getParameter("password"); 
              String sex = request.getParameter("sex"); 
              String birthday = request.getParameter("birthday"); 
              String address = request.getParameter("address");
              // 复选框,使用getParameterValues 
              // 如果不选任何一个,那么数组是null 
              String[] hobbies = request.getParameterValues("hobby"); 
              for (String hobby : hobbies) { 
                  System.out.println(hobby ); 
              }

重点方法是:

  • getParameter()

  • getParameterValues()

  • getMethod()

  • getRequestURI()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值