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>
  • 相关阅读:
    uvaoj 401 Palindromes
    ThinkPHP框架研究之一 基本函数 M和D的区别
    camera
    总结
    安装ecshop出错
    在MySQL数据库建立多对多的数据表关系
    北京周边骑行路线总结
    解决PowerDesigner中DBMS设置的问题(Repost)
    zendstudio 汉化
    JavaScript高级程序设计-13:事件
  • 原文地址:https://www.cnblogs.com/jgjk/p/7406575.html
Copyright © 2011-2022 走看看