servlet 考试速成

httpservlet所要实现的两个方法

servlet处理请求

获得请求参数信息

获取请求标题中的信息

创建html表单

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>TODO write content</div>
        <form action="Reqservelt" method="get">
            <p>Name:<input type="text" size="15" name="username"></p>
            <p>Destinatin:
                <select>
                    <option value="a">a</option>
                    <option value="b">b</option>
                    <option value="c">c</option>
                </select>
            </p>
            <input type="checkbox" name="m" value="music">music
            <input type="checkbox" name="m" value="sport">sport
            <input type="checkbox" name="m" value="game">game
            <p><input type="submit" value="go"></p>
        </form>
    </body>
</html>

servelt处理代码

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package p1;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author 郑佳杰
 */
public class Requsetser extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
             //获取所以请求的name属性
            
            Enumeration req=request.getParameterNames();
            while(req.hasMoreElements()){
                String obj =(String)req.nextElement();
                out.println(obj);
            }
            //获取所有name=m的属性
            String [] result=request.getParameterValues("m");
            for(String temp:result){
                out.println(temp);
            }
            //获取name=username的属性(单个)
            String thename=request.getParameter("username");
            out.println(thename);
            
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

servlet处理响应





html代码

<!DOCTYPE html>
<!--
To change this license header, choose License Headers in Project Properties.
To change this template file, choose Tools | Templates
and open the template in the editor.
-->
<html>
    <head>
        <title>选择图书</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>
            <form action="theSelectboos" method="get">
            <table border="1">
                <tr>
                    <td>Web技术应用基础</td>
                    <td>信号与系统</td>
                </tr>
                <tr>
                    <td><input name="thebookname" type="radio" value="Web技术应用基础"></td>
                    <td><input name="thebookname" type="radio" value="信号与系统"></td>
                </tr>
                <tr>
                    <td colspan="2"> <input type="submit" value="提交"></td>
                </tr>
            </table>
            </form>
        </div>
    </body>
</html>

处理的Servlet代码

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package p1;

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

/**
 *
 * @author 郑佳杰
 */
public class theSelectboos extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            /* TODO output your page here. You may use following sample code. */
            String bookname = request.getParameter("thebookname");
            if(bookname.equals("Web技术应用基础")){
                response.sendRedirect("html1.html");
            }
            else if(bookname.equals("信号与系统")){
                response.sendRedirect("html2.html");
            }
            System.out.println(request.getHeader("User-Agent"));
        }   
    }
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

JSP

servlet的重点在于内部逻辑实现,而JSP长处在于页面的表达

jsp语法



<% %>

叫做脚本片段,其中写的内容会翻译在Servlet的Service方法中,显然我们可以在Service方法中定义局部变量或者调用其他方法,但是不能
在Service中再定义其他的方法,也就是我们可以在<%%>中定义局部变量或者调用方法,但不能定义方法。在jsp页面可以有多个脚本片段,但是多
个脚本片段之间要保证结构完整。

<%!%>

称作声明,其中写的内容将来会直接翻译在Servlet类中,因为我们可以在类中定义方法和属性以及全局变量,所以我们可以在<%!%>中声
明方法、属性、全局变量。

<%=%>

称作jsp表达式,用于将已经声明的变量或者表达式输出到网页上面。

直接写在jsp页面

称作模板元素,将来会Servlet的Service方法中的out.write("___")中,作为输出内容

指令

page指令


重点掌握important就好 但是编译器会帮我们自动生成!

include指令


taglib指令


应该不考。。

动作元素


前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候。

forward

动作:重定向
<jsp:forward page="重定向界面的URL"></jsp:forward>

param

动作:提供参数信息
<jsp:param name="参数名" value="参数值">
获取参数调用request.getParameter("参数名");方法


posted @ 2021-01-02 11:09  一个经常掉线的人  阅读(187)  评论(0)    收藏  举报