Servlet

什么是servlet
jsp页面的前身是servlet, 但是servlet和jsp是两个不同概念
servlet是运行在服务器端的一段程序, 是可以直接运行一段java后台代码
servlet特点:
   1, 功能强大
   2, 可移植性
   3, 速度快, 性能高
   4, 安全性高
   5, 可扩展(面向对象)
与jsp的区别(先了解一下MVC模式的编程):
   1, 角色不同(视图层和控制层)
   2, 编程方法不同
   3, 是否需要重新编译
   4, 运行速度不同

servlet的代码结构
public class 类名 extends HttpServlet{
    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
     ...执行代码块
    }

   protected void doPost(HttpServletRequest request, HttpServletResponse response) {
    ...执行代码块
   }
}

在web.xml中配置servlet的访问路径
  <servlet>
       <servlet-name>定义一个名字</servlet-name>
       <servlet-class>servlet类的全路径名(选中类名右键点复制限定名, 贴在这里)</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>与上面定义的名字一模一样<servlet-name>
    <url-pattern>/请求的路径(与页面上的一模一样)</url-pattern>
 </servlet-mapping>

servlet生命周期:
init();----初始化一个servlet类的实例, 这个方法只会执行一次
   可以在web.xml中配置, <load-on-startup></load-on-startup>, 标签中写一个int型数字, 当这个值为0或者不配置这个标签的时候, 这个servlet将会在使用的时候才会去初始化, 其他数字会在          tomcat服务器运行的时候就加载, 数字越小, 优先级越高
service()方法
    这个方法是响应客户请求的, 这个方法的执行来决定这个servlet是该调用doPost还是doGet
destory();----销毁一个servlet类的实例
     停止tomcat的时候会调用此方法, 来销毁servlet实例对象, 释放资源

servlet中的9大内置对象
  request
  response
  out--->response.getWriter(){注意, 这里的out跟response.getWriter()是有区别的}
  application--->request.getServletContext()
  session--->request.getSession()
  pageContext--->参考jsp中pageContext的获取过程
  page--->this对象
  exception--->抛出的异常对象
  config---调用父类的getServletConfig()

 

package text;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet{

/*
    @Override
    protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
        System.out.println("执行servlet中的service方法!");
    }
*/
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行servlet中的doGet方法!");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("执行servlet中的doPost方法!");
    }
    
package text;

import java.io.IOException;

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 TextServlet2
 */
@WebServlet("/TextServlet2")
public class TextServlet2 extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public TextServlet2() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*        String name = request.getParameter("username");
        request.getServletContext();
        request.getSession();
        response.getWriter();
        System.out.println(name);*/
        /*出现乱码 */
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        String realname = request.getParameter("realname");
        
        response.getWriter().append("username"+username+"\n password"+password+"\n realname"+realname);
        
        
        
        
        
    }
    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }
    
    @Override
    public void init(ServletConfig config) throws ServletException {
        
    }

/*    @Override
    public void destroy() {
        System.out.println("servlet被销毁");
    }

    @Override
    public void init() throws ServletException {
        System.out.println("初始化servlet");
    }
*/    
    

}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    id="WebApp_ID" version="3.0">
 
<servlet>
     <servlet-name>hanqi</servlet-name>
     <servlet-class>text.TestServlet</servlet-class>
     <!-- 启动时加载 -->
     <!-- 当这个标签中的数字是0或者不配置这个标签的时候,servlet默认使用的时候加载 -->
     <!-- 数字不是0的时候,为启动服务器加载,数字越小优先级越高 -->
     <load-on-startup>1</load-on-startup>
<!-- <init-param>
           <param-name>username</param-name>
           <param-value>admin</param-value>
     </init-param>
     <init-param>
           <param-name>password</param-name>
           <param-value>123456</param-value>
     </init-param>    -->
</servlet>
<servlet-mapping>
     <servlet-name>hanqi</servlet-name>
     <url-pattern>/TestServlet</url-pattern>
</servlet-mapping>

</web-app>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>
    <a href="TextServlet2?username=aaaa">测试Servlet链接</a><br>
    <form action="TestServlet" method="post">
        <input type="submit" value="aaa" >
    </form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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="TextServlet2" method="post">
    <input name="username" type="text" /><br>
    <input name="password" type="text" /><br>
    <input name="realname" type="text" /><br>
    <input type="submit" value="提交" />
</form>

</body>
</html>

 

posted @ 2017-08-21 20:44  挽你何用  阅读(190)  评论(0编辑  收藏  举报