Servlet入门

2018-09-19  本文已影响0人  磊_5d71
package com.alan.servlet;

import java.io.IOException;

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

//需要继承HttpServlet类
public class LoginServlet extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("我是doGet方法");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("我是doPost方法");

    }
}
    <!-- 
    给LoginServlet类配置一个对象访问的虚拟路径,一个servlet标签对应一个类
   -->
   <servlet>
        <!-- 给类配置别名,方便使用,一般配置为类的名称 -->
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.alan.servlet.LoginServlet</servlet-class>
   </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>   
        <!-- 配置对外访问虚拟路径,就是/LoginServlet -->
        <url-pattern>/LoginServlet</url-pattern>
    </servlet-mapping>

servlet路径问题

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!-- 路径对应http://localhost:8080/ServletProj/LoginServlet -->
<%
    String basePath = request.getScheme()+":"+"//"+request.getServerName()+":"+request.getServerPort()
    +request.getServletContext().getContextPath()+"/";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登陆</title>
</head>
<body>
    <form align="center"
        action="<%=basePath %>LoginServlet" method="post">
        <p>
            用户名:<input type="text" name="username">
        </p>
        <p>
            密码:<input type="password" name="password">
        </p>
        <p>
            <input type="submit" value="登陆"> <input type="reset"
                value="重置">
        </p>
    </form>
</body>
</html>

Servlet生命周期

package com.alan.servlet;

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;

//下述配置方式等同于在web.xml中配置
@WebServlet("/LifeServlet")
public class LifeServlet extends HttpServlet {
    
    @Override
    public void init(ServletConfig config) throws ServletException {
        System.out.println("Servlet的init()方法");
    }
    
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("Servlet被请求了");
    }

    @Override
    public void destroy() {
        System.out.println("Servlet被销毁了");
    }

}

image.png

Servlet请求与响应

package com.alan.servlet;

import java.io.IOException;

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

//需要继承HttpServlet类
public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取表单提交过来的数据,先设置编码格式。只对post方式有效
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("username");
        String password = request.getParameter("password");

        System.out.println("username:" + name);
        System.out.println("password:" + password);
    }

    // 使用doPost()方法时,也调用doGet()方法
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

}

ServletContext与ServletConfig

package com.alan.servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * ServletContext对象:表示整个JavaWeb工程
 * ServletConfig对象:表示某一个Servlet类的配置文件
 * @author alan
 *
 */

@WebServlet("/ServletDemo1")
public class ServletDemo1 extends HttpServlet {
       

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取整个web工程对象
        //context对象是一个域对象,可以往某一个域对象中存放数据,并且还可以取出存放的数据
        ServletContext context = this.getServletContext();
        //往context域对象中存放数据
        context.setAttribute("username","张三");
        //取出context域中的存放数据
        Object result = context.getAttribute("username");
        //打印取出的结果
        System.out.println(result);
        
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
package com.alan.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;




@WebServlet("/ServletDemo2")
public class ServletDemo2 extends HttpServlet {


    
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        Object resutl = this.getServletContext().getAttribute("username");
        System.out.println(resutl);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}
package com.alan.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;




//虚拟路径在web.xml中配置,ServletConfig
public class ServletDemo3 extends HttpServlet {


    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //首先获取ServletConfig对象
        String result = this.getServletConfig().getInitParameter("encoding");
        System.out.println(result);
        
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        
    }

}
    <servlet>
    <servlet-name>ServletDemo3</servlet-name>
    <servlet-class>com.alan.servlet.ServletDemo3</servlet-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServletDemo3</servlet-name>
    <url-pattern>/ServletDemo3</url-pattern>
  </servlet-mapping>

转发与重定向的区别

package com.alan.servlet;

import java.io.IOException;

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

//需要继承HttpServlet类
public class LoginServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 获取表单提交过来的数据,先设置编码格式。只对post方式有效
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("username");
        String password = request.getParameter("password");

        System.out.println("username:" + name);
        System.out.println("password:" + password);
        
        //1、通过转发实现跳转
        if(name.equals("admin")&&password.equals("123")) {
            request.getRequestDispatcher("/success.jsp").forward(request, response);
        }else {
            //request.getRequestDispatcher("/fail.jsp").forward(request, response);
            //2、通过重定向实现跳转,重定向需要写工程名字
            //注意url也放生变化,最后为fail.jsp
            response.sendRedirect("/ServletProj/fail.jsp");
            
        }
        
    }

    // 使用doPost()方法时,也调用doGet()方法
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

}

上一篇下一篇

猜你喜欢

热点阅读