eclipse 配置JDK
HTML 标签的 href 属性
新建MyFirstServletDemo项目;
新建index.jsp:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
Insert title here
第一个Servlet小例子
Get方式请求HelloServlet
在src下新建servlet包,在包下新建类HelloServlet时指定父类:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//继承于HttpServlet
public class HelloServlet extends HttpServlet {
@Override //表示重写,从父类继承过来的方法。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理Get()请求....");
PrintWriter out=response.getWriter(); //获得给浏览器输出的对象
out.println("Hello Servlet!
");//给浏览器输出信息,strong标签字体加粗,
换行
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
java.io.PrintWriter是java中很常见的一个类,该类可用来创建一个文件并向文本文件写入数据。可以理解为java中的文件输出,java中的文件输入则是java.io.File。
接下来注册servlet:
servlet-mapping作用
url定义路径
/web工程的根目录
新建web.xml:
index.jsp
HelloServlet
servlet.HelloServlet
HelloServlet
/servlet/HelloServlet
输出结果:
输出标签是因为没有指定文件类型:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//继承于HttpServlet
public class HelloServlet extends HttpServlet {
@Override //表示重写,从父类继承过来的方法。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理Get()请求....");
PrintWriter out=response.getWriter(); //获得给浏览器输出的对象
response.setContentType("text/html;charset=utf-8");
out.println("Hello Servlet!
");//给浏览器输出信息,strong标签字体加粗,
换行
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
由于用get方式请求,所以System.out.println处理get请求这句话在后台打印输出:
input type提交按钮
post方法:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
Insert title here
第一个Servlet小例子
Get方式请求HelloServlet
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//继承于HttpServlet
public class HelloServlet extends HttpServlet {
@Override //表示重写,从父类继承过来的方法。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理Get()请求....");
PrintWriter out=response.getWriter(); //获得给浏览器输出的对象
response.setContentType("text/html;charset=utf-8");
out.println("Hello Servlet!
");//给浏览器输出信息,strong标签字体加粗,
换行
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理Post()请求....");
PrintWriter out=response.getWriter(); //获得给浏览器输出的对象
response.setContentType("text/html;charset=utf-8");
out.println("Hello Servlet!
");//给浏览器输出信息,strong标签字体加粗,
换行
}
}
input type="submit" 和"button"有什么区别?
新建index.jsp:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"%>
Insert title here
使用Eclipse创建Servlet小例子
Get方式请求HelloServlet
在src新建servlet包和HelloServlet类:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class HelloServlet
*/
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public HelloServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
}
/**
* @see Servlet#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理Get请求...");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println(" A Servlet ");
out.println(" ");
out.println("Hello Servlet!
");
out.println(" ");
out.println("");
out.flush();
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("处理Post请求...");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println(" A Servlet ");
out.println(" ");
out.println("Hello Servlet!
");
out.println(" ");
out.println("");
out.flush();
out.close();
}
}
新建web.xml:
This is the description of my J2EE component
This is the display name of my J2EE component
HelloServlet
servlet.HelloServlet
HelloServlet
/servlet/HelloServlet
index.jsp
结果:
servlet执行流程:
首先接收用户的请求,用户点击超链接,超链接请求的地址就是一个servlet,以超链接方式提交称为get请求。
用户点击超链接,提交给服务器之后,服务器会在web.xml配置文档中,在servlet-mapping中寻找超链接地址和与之相对应的servlet名字,再到servlet标签寻找名字和处理类,于是就找到了处理类。然后根据用户提交的请求方式,由于用的是超链接,服务器分析出来用的是get请求,于是执行这个类中重写的doGet方法,这样在页面上显示servlet执行结果。
要生成servlet实例,要调用构造方法, 在init方法前调用,然后调用初始化方法init。