Servlet

##Servlet开发流程

1、定义Servlet类

  • 直接实现Servlet接口

    public class MyServlet implements Servlet{
        //需要定义5个Servlet接口中声明的方法
    }
    
  • 为了简化开发,针对非标准协议,提供了一个抽象父类GenericServlet

    • 采用的是适配器模式
    • 一般用于游戏的服务器端开发
    public class MyServlet extends GenericServlet{
        public void service(ServletRequest request,ServletResponse response)throws ServletException,IOException {
            
        }
    }
    
  • 为了进一步简化开发,针对http协议,提供了一个父类HttpServlet

    • 采用的是模板模式,主要提供的service方法的实现,所以一般不允许覆盖定义service
    • 内部实现实际上就是通过request.getMethod():String获取请求方法,然后根据对应的请求方法转发给对应的doXxxx方法
      • 例如/add.do?id=124&name=lisi
        • get请求使用?作为地址和参数的分割,例如add.do是请求地址,?之后的内容就是请求串
        • 多个请求参数之间采用&符号作为分割
        • 参数的格式为[名称=值]
    public class MyServlet extends HttpServlet{
        public void doXxx(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
            ...
        }
    }
    

2、使用web应用的核心配置文件/WEB-INF/web.xml映射当前Servlet

  • Servlet类中没有main方法,也就是说具体调用由服务器负责。具体执行时机默认为第一次用户请求时

    <servlet>
    	<servlet-name>名称</servlet-name>
        <servlet-class>对应的类的全名</servlet-class>
    </servlet>
    <servlet-mapping>
    	<servlet-name>对应上面定义的名称</servlet-name>
        <url-pattern>/请求地址.do</url-pattern>
    </servlet-mapping>
    

3、当用户在浏览器中输出xml中配置的请求路径,则由服务器负责按照一定的标准调用Servlet类中的定义方法

###Servlet常见错误

404错误:资源未找到

  • 在请求地址中的servlet的别名书写错误
  • 虚拟项目名称拼写错误

500错误:内部服务器错误

  • ClassNotFoundException,检查web.xml中Servlet类的全限定类名称拼写是否正确
  • 因为service方法体的代码执行错误导致的,可以根据提示信息对方法体中的代码进行更改

405错误:请求方式不支持

  • 请求方式和servlet中的方法不匹配所导致的

Caused by: java.net.BindException: Address already in use: JVM_Bind

  • 多次重复启动服务器,导致服务器端口号冲突
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值