1_Servlet详解

1、Servlet简介

(1)什么是Servlet?
  • Servlet 是一个特殊的类,继承自HttpServlet,遵循http协议
  • Servlet 在服务器上运行以处理客户端请求
  • Servlet 必须要有Web容器的支持(如Tomcat)
  • Servlet 必须重写 doGet 、doPost 或 service() 方法
  • 里面可以输出html标记,借助Java语言,将数据库中的信息动态显示到网页中
(2)Servlet的工作原理

这里写图片描述

(3)Servlet类库

javax.servletjavax.servlet.http 是创建Servlet所需要的两个必备类库。
这里写图片描述

这里写图片描述

(4)Servlet的声明周期

实例化 –> 初始化(init()) –> 服务(service())–>销毁(destroy()

Servlet是一个单实例、多线程运行方式的类

(5)请求对象和响应对象的常用方法

HttpServletRequest的常用方法
这里写图片描述
这里写图片描述

HttpServletResponse的常用方法
这里写图片描述

(6)解决论码问题

请求:request.setCharacterEncoding(“utf-8”)
响应:response.setCharactType(“text/html;charset=utf-8”);

(7)请求转发和重定向

重定向前后的资源位于两次不同的请求中
请求转发
这里写图片描述
重定向
这里写图片描述

(8)Servlet上下文

Servlet 所共有的属性和资源存储于 ServletContext 接口对象中,处理上下文属性的方法为:
这里写图片描述

2、小应用

(1)登录

register.html

<form action="register" method="post">
    姓名:<input type="text" name="uname"><br>
    密码:<input type="password" name="pwd"><br>
    <input type="submit" value="注册">
</form>

RegisterAction.java

//请求的路径
@WebServlet("/register")
@SuppressWarnings("serial")
public class RegisterAction extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //无论使用何种方法,最终都是发送的post请求
        //get:数据传输快,不安全,最多只能传256个字节
        //post:数据传输慢,安全,数据量大
        doPost(request,response);
    }
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //处理中文乱码
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //获取输出对象
        PrintWriter out = response.getWriter();
        //获取表单中传入的参数
        String uname = request.getParameter("uname");
        String pwd = request.getParameter("pwd");
        if(uname.equals("czy")&&pwd.equals("123")) {
            //1.方式1
            RequestDispatcher rd = request.getRequestDispatcher("main.html");
            rd.forward(request,response);
            //2.方式2:重定向
            //response.sendRedirect("main.html");
        } else {
            response.sendRedirect("register.html");
        }
        out.close();
    }
}

main.html

<h1>显示首页</h1>
(2)统计网站的访问总量

Servlet上下文:Servlet所有的属性和资源都存储于ServletContext接口对象中。
生命周期:在服务器运行期间

ask.java

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    PrintWriter out = response.getWriter();
    ServletContext application = this.getServletContext();
    Integer an = (Integer)application.getAttribute("anum");
    if(an==null) {
        application.setAttribute("anum", 1);
    } else {
        application.setAttribute("anum", an+1);
    }
    an = (Integer)application.getAttribute("anum");
    out.print("网站访问量:" + an);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值