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("参数名");方法




浙公网安备 33010602011771号