开发servlet三种方法
1.实现servlet接口
2.继承GenericServlet
3.继承HttpServlet
需求如下 请使用实现接口的方式,来开发一个Servelt,要求该Servlet可以显示hello,同时显示当前时间
步骤:
1.建立一个WEB应用web1
2.在web1下建立WEB-INF/web.xml (从ROOTWEB-INF/web.xml 下复制)
3.在WEB-INF下创建classes lib目录
4.在WEB-INF/classes/创建一个servlet.java
Servlet API资料下载
Destroy()
getServletConfig()
package com.hsp;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
class Myfirestservlet implements Servlet
{
//该函数用于初始化Servlet,就是把该servlet装载到内容中
//该函数只会被调用一次
public void init(ServletConfig config)
throws ServletException{
}
//得到ServletConfig对象
public ServletConfig getServletConfig(){
return null;
}
//该函该数是服务函数,我们的业务逻辑代码就是写在这里
//该函数每次都会被调用
public void service(ServletRequest req,
ServletResponse res)
throws ServletException ,
java.io.IOException{
}
//该函数得到servlet配置信息
public java.lang.String getServletInfo(){
return null;
}
//销毁该servlet,从内存
public void destroy(){
}
}
法二:
继承GenericServlet的方法开发servlet(一般不用)
public class HttpExample extends GenericServlet{
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
arg1.getWriter().println("hello world");
}
}
法三:
继承httpServlet的方法来开发Servlet
(1)在软件公司90%都是通过该方法开发
(2)举例说明,还是显示hello world当前日期
package com.xiyou.geng;
import java.io.IOException;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class MyGenricServlet
*/
@WebServlet("/MyGenricServlet")
public class HttpExample extends HttpServlet {
private static final long serialVersionUID = 1L;
public HttpExample() {
super();
}
//在httpServlet中,设计者对POST提交和GET提交分别处理
//回忆<from action="提交给?" method="post|get"/>默认是get
//doget dopost最终也调用了service方法
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("i am doget");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("i am dopost"+request.getParameter("username"));//username是在login.html中
}
}
还有一个login.html文件
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/web_01/http" method="post">
u:<input type="text" name="username">
<input type="submit" value="login"/>
</body>
</html>
通过HttpServlet去开发Servlet,需要重写doGet,doPost方法。这是目前用的最多的一种方法
表单提交数据get请求和post请求的区别
(1)从安全性看get 小于post,get提交的数据会在浏览器的地址栏显示
(2)从提交的内容大小看get小于post,get提交的数据不能大于2K,而破杀他提交的数据理论上不受限制,但是实际编程中建议不要大于64K
(3)从请求响应速度看:get 大于post,get要求服务器立即处理请求,而post请求可能形成一个队列请求