package cn.tedu.web;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(urlPatterns = "/demo1")
public class Demo1Servlet implements Servlet {
/**
*
* @param servletConfig
* @throws ServletException
*/
@Override
public void init(ServletConfig servletConfig) throws ServletException {}
@Override
public ServletConfig getServletConfig() {return null;}
@Override
public void service(ServletRequest servletRequest, ServletResponse response) throws ServletException, IOException {
System.out.println("模拟器接收到请求了");
PrintWriter writer = response.getWriter();
writer.write("hello response");
}
@Override
public String getServletInfo() {return null;}
@Override
public void destroy() {}
}
package cn.tedu.web;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = {"/demo2","/demo222"})
public class Demo2Servlet extends HttpServlet {
/**
* 服务方法:浏览器每次访问,都会执行该方法
* @param req:请求对象,处理请求数据
* @param resp:响应对象,处理响应数据
* @throws ServletException
* @throws IOException
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
response.getWriter().write("what the fox say!!!");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}
package cn.tedu.web;
//本类用于测试response的中文乱码的处理问题
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = "/date")
public class Demo3Servlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//响应数据中包含中文,会乱码,用以下代码指定编码,缓冲字符输出流内部有一个缓冲区
//这个缓冲区的默认字符集是ISO-8859-1
resp.setContentType("text/html;charset=utf-8");
//给浏览器响应数据
resp.getWriter().write("暗香残留");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
package cn.tedu.web;
//请求转发测试类
/*请求转发是服务器内部资源的一种跳转方式,即当浏览器发送请求访问服务器中的某一个资源时
* 该资源将请求转交给另外一个资源进行处理的过程,就叫做请求转发,具有以下特点:
* 1,请求转发整个过程是一次请求、一次响应
* 2,请求转发前后,浏览器地址栏地址不会发生变化(浏览器–访问–>A–转发–>B,地址栏地址始终指向A的地址)
* 3,请求转发前后的request对象是同一个
* 4,转发前后的两个资源必须属于同一个Web应用,否则将无法进行转发
* 5,使用代码: request.getRequestDispatcher(访问目的资源的路径).forward(request,response);
* 6,也可以使用 setAttribute()/getAttribute()来验证*/
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = "/demo4")
public class Demo4 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Demo4...service");
req.getRequestDispatcher("/demo5").forward(req,resp);
}
}
package cn.tedu.web;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = "/demo5")
public class Demo5 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("Demo5...service");
resp.getWriter().write("Demo5...response");
}
}
package cn.tedu.web;
/*浏览器资料上传测试*/
/*Request对象用来解析请求参数,当浏览器访问服务器时,携带着一些请求参数
* 可以通过Servlet提供的Request对象提供的API来解析请求参数请求对象有两个*/
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
/**1.定义类Demo6继承HttpServlet的方式
* 作用:获取浏览器提交的数据,以及响应数据给浏览器
* 2. doGet方法: request,response
* request请求对象:在服务器端,获取浏览器提交的请求数据
* response响应数据:响应数据到浏览器
* 3. doPost方法: request,response
* request请求对象:在服务器端,获取浏览器提交的请求数据
response响应教粥:响应数据到浏览器*/
@WebServlet(urlPatterns = "/d6")
public class Demo6 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//根据参数名获取参数的值
//方式1:根据参数名获取一个值
String name = req.getParameter("username");
System.out.println("请求的用户名"+name);
String psw = req.getParameter("psw");
System.out.println("请求的用户密码"+psw);
//获取所有参数的值并存入数组
//方式2:根据参数名获取所有值,并返回数组
String[] love = req.getParameterValues("love");
System.out.println("请求的用户爱好"+ Arrays.toString(love));
//给浏览器做出响应
resp.getWriter().print("曹狗出来对线");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String userValue = req.getParameter("username");
System.out.println("请求的用户名"+userValue);
String pswValue = req.getParameter("psw");
System.out.println("请求的用户密码"+pswValue);
String[] love = req.getParameterValues("love");
System.out.println("请求的用户爱好"+ Arrays.toString(love));
}
}
package cn.tedu.web;
//本类用于重定向测试
/*当浏览器向服务器发送请求访问某一个资源A时
* 资源A在响应时通知浏览器需要再进一步请求才能获取到对应的资源
* 浏览器再次向服务器发送请求访问资源B,最终是由资源B响应浏览器要获取的数据
* 这个过程叫做重定向*/
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns = "/d7")
public class Demo7 extends HttpServlet {
/*重定向具有以下特点:
* 1,重定向前后是两次请求、两次响应
* 2,重定向前后,浏览器地址栏地址会发生变化(因为两次请求都是通过浏览器发起
* 浏览器知道这个跳转过程,因此地址栏地址会发生变化)。
* 3,重定向前后的request对象不是同一个 (因此重定向前后是两次请求
* 服务器根据两次请求会创建两个request对象,因此request对象不是同一个)
* 4,重定向前后的两个资源可以来自不同的Web应用,甚至可以是来自不同的虚拟主机或者服务器。
* 5,使用代码: response.sendRedirect(“重定向到资源的路径”);*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//重定向的地址,可以随意设置,不是必须在同一工程中
resp.sendRedirect("https://blog.youkuaiyun.com/Jcskson?type=blog");
// resp.sendRedirect("https://d.tanwan.cn/h/19981.html?cplaceid=130082556.4919950329.181098262618&bd_vid=10700144543780212867");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}