zoukankan      html  css  js  c++  java
  • 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+"
     password"+password+"
     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>
  • 相关阅读:
    随笔2
    随笔
    关于updateElement接口
    随笔1
    本地访问正常,服务器访问乱码 记录
    Redis (error) NOAUTH Authentication required.解决方法
    tomcat启动很慢 停留在 At least one JAR was scanned for TLDs yet contained no TLDs.
    微信公众号消息回复
    微信公众号 报token验证失败
    idea中web.xml报错 Servlet should have a mapping
  • 原文地址:https://www.cnblogs.com/jgjk/p/7406575.html
Copyright © 2011-2022 走看看