美文网首页Servlet学习专栏笔记
什么是Serlvet?作用?怎么编写?

什么是Serlvet?作用?怎么编写?

作者: SeptemberNotes | 来源:发表于2018-11-22 11:03 被阅读0次

    什么是Serlvet?

    Servlet是运行在服务器端的程序,用于处理及响应客户端的请求。
    Servlet是个特殊的Java类,必须继承HttpServlet。每个Servlet可以响应客户端的请求

    Servlet的作用?

    Servlet的作用是为客户提供服务。servlet的角色是接受一个客户的请求,再返回一个响应。请求可能非常简单,例如:给我提供一个欢迎页面;也可能非常复杂,例如:为当前的购物车结账,这个请求会带一些客户端传来的参数,servlet需要知道自己如何使用请求中的参数,还需要知道该返回什么样的响应。

    实现Servlet接口编写Servlet程序

    1、创建一个自定义类,实现Serlvet接口

    public class MyServlet03 implements Servlet {
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {

        }

        @Override
        public ServletConfig getServletConfig() {
            return null;
        }

        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

        }

        @Override
        public String getServletInfo() {
            return null;
        }

        @Override
        public void destroy() {

        }
    }

    我们发现有5个方法需要重写,有init【初始化】,destroy【销毁】,service【服务】,ServletConfig【Servlet配置】,getServletInfo【Serlvet信息】。
    注意:service()方法是写逻辑代码的地方

    调用ServletResponse对象的方法向浏览器输出HelloWorld

        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            //调用ServletResponse对象的方法向浏览器输出HelloWorld
            servletResponse.setContentType("text/html;charset=utf-8");
            servletResponse.getWriter().write("输出HelloWorld!");
        }

    2、光写了Servlet是不行的,Tomcat还要知道浏览器怎么访问这个Servlet,所以要配置web.xml文件

        <servlet>
            <servlet-name>MyServlet03</servlet-name>
            <servlet-class>com.jiuyue.servlet.MyServlet03</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>MyServlet03</servlet-name>
            <url-pattern>/MyServlet03</url-pattern>
        </servlet-mapping>

    继承HttpServlet,编写Servlet程序

    1、创建一个自定义类,继承HttpServlet类

    public class MyServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("doGet请求相应");
        }

        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.doPost(req, resp);
        }

        @Override
        protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            super.service(req, resp);
            resp.getWriter().write("service写业务逻辑输出HelloWorld!");
        }

        @Override
        public void destroy() {
            super.destroy();
        }

        @Override
        public ServletConfig getServletConfig() {
            return super.getServletConfig();
        }

        @Override
        public void init(ServletConfig config) throws ServletException {
            super.init(config);
        }

    2、配置web.xml文件

        <servlet>
            <servlet-name>MyServlet</servlet-name>
            <servlet-class>com.jiuyue.servlet.MyServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>MyServlet</servlet-name>
            <url-pattern>/MyServlet</url-pattern>
        </servlet-mapping>

    @WebServlet的使用方法

    在servlet3.0以后,我们可以不用再web.xml里面配置servlet,只需要加上@WebServlet注解就可以修改该servlet的属性了。

    1、直接新建一个Servlet类

    //urlPatterns指定访问的url
    @WebServlet(name = "MyServlet02",urlPatterns = "/MyServlet02")
    public class MyServlet02 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().write("到达doPost请求");
        }

        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //可以在doGet调用doPost方法
            //doPost(request,response);
            response.setContentType("text/html;charset=UTF-8");
            response.getWriter().write("到达doGet请求");
        }
    }

    下面是@WebServlet的属性列表。

    “关注我的微信公众号,一起进步“

    相关文章

      网友评论

        本文标题:什么是Serlvet?作用?怎么编写?

        本文链接:https://www.haomeiwen.com/subject/xrakqqtx.html