当前位置 博文首页 > 立志欲坚不欲锐,成功在久不在速度:Java Servlet

    立志欲坚不欲锐,成功在久不在速度:Java Servlet

    作者:[db:作者] 时间:2021-07-31 12:11

    什么是Servlet?

    ? ? ? ?Servlet 是JavaWeb开发的基石,与平台无关的服务器组件,它是运行在Servlet容器/web应用服务器(Tomcat)上的,负责与客户端进行通信

    ? ? ? Servlet运行在Web服务器或应用服务器上的程序,它是作为来自Web浏览器或其他HTTP客户端的请求和HTTP服务器上的数据库之间的中间层

    Servlet的功能:

    • ? ? ? 创建并返回基于客户请求的HTML页面
    • ? ? ?与数据库进行通信

    如何访问Servlet?

    ? ?Servlet本身是一组接口,要想使用Servlet我们需要自定义一个类,并且实现Servlet接口,这个类就具备了接受客户端请求以及做出响应的功能

    MyServlet.java是我自己定义的一个文件

    然后实现Servlet接口:

    // 导入必需的 java 库
    import java.io.*;
    import javax.servlet.*;
    
    public class MyServlet implements Servlet{
        @Override
        public void init(ServletConfig servletConfig) throws ServletExction{
    
        }
        
        @Override
        public ServletConfig getServletConfig(){
            retur null;
        }
        
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse){
            
        }
    
        @Override
        public String getServletInfo(){
    
        }
        @Override
        public void destroy(){
    
        }
    
    }

    其中Servlet是最核心的方法

    那么如何访问这个servlet呢?

    当我们通过Tomcat打包之后,会注意到我们IDEA左侧出现了一个文件:mytomcat001_war_exploded

    mytomcat001_war_exploded相当于默认的根目录,是打包之后生成的文件,默认下会访问index.jsp

    由于Servlet文件是不能直接通过客服端浏览器访问的,其实也可以说客户端不能直接访问WEB-INF中的文件

    所以要想访问Servlet文件,只能通过映射的方式来简介的访问Servlet,映射需要开发者手动配置,有两种配置方式

    第一种:基于XML文件的配置方式

    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.southwind.sevlet.Myservlet</servlet-class> 
    </servlet>
    
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/myservlet</url-pattern>
    </servlet-mapping>

    通过name相同可以达到映射匹配的联系。由于name相同,所以通过/myservlet ?就可以访问到上面的文件路径

    只要两个name一致即可!

    做个例子:

    我在MyServlet 的 service()方法中加入内容:

    // 导入必需的 java 库
    import java.io.*;
    import javax.servlet.*;
    
    public class MyServlet implements Servlet{
        @Override
        public void init(ServletConfig servletConfig) throws ServletExction{
    
        }
        
        @Override
        public ServletConfig getServletConfig(){
            retur null;
        }
        
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse){
            string id=servletRequest.getParameter("id");
            System.out.println("我是Servlet,我已经接收到了客户端发来的请求,参数是"+id);
            servletResponse.setContentTyep("text/html;charset=UTF-8");//显示的文本格式
            servletResponse.getWriter().write("客户端你好,我已经接受到你的请求");
        }
    
        @Override
        public String getServletInfo(){
    
        }
        @Override
        public void destroy(){
    
        }
    
    }

    然后我在浏览器中输入: locallhost:8080/myservlet?id=1

    第二种方式:基于注解的方式

    我们可以把XML中的内容全部删掉

    在Servlet的上面直接写入:@WebServlet()

    @WebServlet("/myservlet")
    public class HelloServlet implements Servlet{}

    现在普遍都使用注解的方式

    ?

    ?

    cs