Servlet是用于WEB服务器端的Java小程序。
servlet的实现过程:
客户端请求该 Servlet
加载 Servlet 类到内存
实例化并调用init()方法初始化该 Servlet
service() 方法根据请求方法不同调用doGet() 或者 doPost
destroy()
说明:
service() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。
(HttpServletRequest req, HttpServletResponse resp)
doGet()
当一个客户通过表单发出GET 请求或直接请求一个 URL 时,doGet() 方法被调用。与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。
doPost()
当一个客户通过 表单发出POST 请求时,doPost() 方法被调用。与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。
destroy() 方法
destroy() 方法仅执行一次,即在Tomcat服务器停止 时执行该方法。
servlet小实例开发过程:
在WebContent文件夹下的WEB-INF文件夹的web.xml中写下代码
<welcome-file-list> <welcome-file>index.html</welcome-file> //这些为页面以哪种形式显示 <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list>
Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被外界访问。
一个<servlet>元素用于注册一个Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。
一个<servlet-mapping>元素用于映射一个已经注册的Servlet的一个对外访问路径,它包含有两个字元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和对外访问路径。
例如:在web.xml中
<servlet> <servlet-name>Sample</servlet-name> <servlet-class>jp.co.nttdata.byd.Sample</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sample</servlet-name> <url-pattern>/byd/Sample</url-pattern> </servlet-mapping>
对应的类要继承 HttpServlet 类,然后依据servlet实现过程,编写init(),doGet(),doPost(),destroy()等方法。
例如:
public class Sample extends HttpServlet { /** * serialVersionUID */ private static final long serialVersionUID = -1936901196555528367L; //init() public void init() throws ServletException { System.out.println("This is initMethod"); } //doGet() public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("This is doGet"); resp.setContentType("text/html;charset=UTF-8"); PrintWriter out = resp.getWriter(); out.println("<html>"); out.println("<body>"); out.println("This is my Servlet"); out.println("</body>"); out.println("</html>"); } //doPost() public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } //destroy() public void destroy() { super.destroy(); System.out.println("This is destroy"); } }
进行页面与页面间的跳转时,由jsp到blogic再到jsp
在jsp页面中的body中写下
<body> <form name="loginForm" action="/byd/byd/JspSample" method="POST"> //action表示所要跳转到的业务逻辑 index <input name="loginId" type="text" /> <input name="loginName" type="text" value="${loginName}"/> <input type="submit" value="sub" /> </form> </body>
在类中的doGet()或doPost()中写下
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("This is doGet"); resp.setContentType("text/html;charset=UTF-8"); String loginId = req.getParameter("loginId"); req.setAttribute("loginId", loginId); req.setAttribute("loginName", "baiyadan"); req.getRequestDispatcher("/response.jsp").forward(req, resp); //response.jsp为所要跳转到的页面 }