第五点 ServletConfig对象与 ServletContext对象
ServletConfig对象功能:获取静态数据
ServletContext对象功能:ServletContext 作用 同一个项目共享数据。
1 共享静态数据
package com.DengLu.And.Zhu.Ce; import java.io.IOException; import java.io.PrintWriter; import javax.jws.WebParam; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ServlectZhuZeA * 定义静态数据:方法一 */ @WebServlet(urlPatterns = "/ServlectZhuZeA",initParams = { @WebInitParam(name="用户名",value="hug") }) public class ServlectZhuZe extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ServlectZhuZe() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); /* * 获取静态数据 */ ServletConfig config=getServletConfig(); String a=config.getInitParameter("用户名"); ServletContext sc=getServletContext(); //创建动态数据 sc.setAttribute("身份账号", "360429200010080987"); //获取动态数据 //强制转型 String b= (String) sc.getAttribute("身份账号"); response.getWriter().append("<h1>ServlectZhuZeA中设置动态数据<h1>"+b); /** * 创建动态数据 */ /* * PrintWriter pw = response.getWriter(); */ PrintWriter pw = response.getWriter(); pw.append("<style>"); pw.append("*{" + " background-color:whitesmoke" + "}"); pw.append("</style>"); pw.append("<h1 style='color:green' align ='center' >微信注册页面</h1>" + "<hr>"); pw.append("<div align ='center' style='color:black;font-size:25px'>"); pw.append("<form action='ServlectZhuCeLogic' method='post' style='background:green;height:200px;width:400'>"); pw.append("微信用户名:<input type='text' name='use'>" + "<br>"); pw.append("新用户手机号:<input type='text' name='phones'>" + "<br>"); pw.append("手机发来的验证码:<input type='text' name='xi'>" + "<br>"); pw.append("新用户输入新密码:<input type='password' name='pw'>" + "<br>"); pw.append("请再次输入新密码:<input type='password' name='pws'" + "<br>"+ "<br>" ); pw.append("<input type='submit' value='注册'>"); pw.append("</form>"); pw.append("</div>"); } /** * @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); } }
<?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"> <display-name>Day04JSp</display-name> <welcome-file-list> <!-- <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> --> <welcome-file>index.jsp</welcome-file> <welcome-file>B.jsp</welcome-file> <!-- <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> --> </welcome-file-list> <!-- 每一个servlet自己静态数据<init-param>--> <context-param> <param-name>lq</param-name> <param-value>篮球</param-value> </context-param> <context-param> <param-name>zq</param-name> <param-value>足球</param-value> </context-param> </web-app>
2 共享动态数据 写在java代码
package com.DengLu.And.Zhu.Ce; import java.io.IOException; import java.io.PrintWriter; import javax.jws.WebParam; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class ServlectZhuZeA * 定义静态数据 */ @WebServlet(urlPatterns = "/ServlectZhuZeA",initParams = { @WebInitParam(name="用户名",value="hug") }) public class ServlectZhuZe extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ServlectZhuZe() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse * response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); /* * 获取静态数据 */ ServletConfig config=getServletConfig(); String a=config.getInitParameter("用户名"); ServletContext sc=getServletContext(); //创建动态数据 sc.setAttribute("身份账号", "360429200010080987"); //获取动态数据 //强制转型 String b= (String) sc.getAttribute("身份账号"); response.getWriter().append("<h1>ServlectZhuZeA中设置动态数据<h1>"+b); /** * 创建动态数据 */ /* * PrintWriter pw = response.getWriter(); */ PrintWriter pw = response.getWriter(); pw.append("<style>"); pw.append("*{" + " background-color:whitesmoke" + "}"); pw.append("</style>"); pw.append("<h1 style='color:green' align ='center' >微信注册页面</h1>" + "<hr>"); pw.append("<div align ='center' style='color:black;font-size:25px'>"); pw.append("<form action='ServlectZhuCeLogic' method='post' style='background:green;height:200px;width:400'>"); pw.append("微信用户名:<input type='text' name='use'>" + "<br>"); pw.append("新用户手机号:<input type='text' name='phones'>" + "<br>"); pw.append("手机发来的验证码:<input type='text' name='xi'>" + "<br>"); pw.append("新用户输入新密码:<input type='password' name='pw'>" + "<br>"); pw.append("请再次输入新密码:<input type='password' name='pws'" + "<br>"+ "<br>" ); pw.append("<input type='submit' value='注册'>"); pw.append("</form>"); pw.append("</div>"); } /** * @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); } }
3 共享文件数据
package com.Servlect; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; 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; /** * Servlet implementation class Servlet3 */ @WebServlet("/Servlet3") public class Servlet3 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() * 图片的下载 */ public Servlet3() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 使用对象完成图片的下载 //设置servlet发送的数据支撑HTML格式 response.setContentType("text/html"); //设置发送servlet 浏览html格式 utf-8 response.setCharacterEncoding("UTF-8"); //设置响应头 response.setHeader("content-disposition", "attachment;filenname=flower.jpg"); ServletContext sa=getServletContext(); String path=sa.getRealPath("/imges/yu.png"); InputStream is =new FileInputStream(path); byte [] bytes =new byte[1024]; int count=-1; OutputStream os=response.getOutputStream(); while((count=is.read(bytes))!=-1) { os.write(bytes,0,count); } //response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @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); } }
package com.servlet; import java.io.IOException; import java.io.InputStream; import java.util.Set; import javax.servlet.ServletConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebInitParam; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Servlet1 */ @WebServlet(urlPatterns = "/Servlet5",initParams = { //增加静态数据的第一个学生 @WebInitParam(name="a",value="胡五伤悲"), @WebInitParam(name="age",value="47岁"), @WebInitParam(name="height",value="169cm"), @WebInitParam(name="weight",value="60kg") }) public class Servlet5 extends HttpServlet { private static final long serialVersionUID = 1L; /** * Default constructor. */ public Servlet5() { // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ @Override public void init() throws ServletException { // TODO Auto-generated method stub super.init(); //定义4个静态数据 ServletConfig config=getServletConfig(); String a=config.getInitParameter("a"); String b=config.getInitParameter("age"); String c=config.getInitParameter("height"); String e=config.getInitParameter("weight"); System.out.println(a+"===="+b+"#######"+c+"-----"+e); System.out.println(e); System.out.println("创建静态数据的方法"); System.out.println("ServletConfig config=getServletConfig();"); System.out.println("访问静态数据的方法"); System.out.println("String a=config.getInitParameter(\"a\");"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); // 获得text.txt完整路径 ServletContext sc=getServletContext(); //指定文件名称获取完整路径 String path=sc.getRealPath("text.txt"); //控制台打印输出文件完整路径 System.out.println(path); //将text.txt读取出来 //IO inputStream /outputStream输出流。 //网上下载的图片以自己为主场输入 //总结:始终以自己为主场,观察数据流向。 /* InputStream is=sc.getResourceAsStream("/text.txt");文件相对路径转为输入流 */ InputStream is=sc.getResourceAsStream("/text.txt"); //分析:1.假设text.txt是一部一百万的小说 //当读取大量数据的时候,采取分段读取,部分读取 //一般情况下,一次读取1024字节byte=1kb 512个字 byte[] bytes=new byte[1024]; //分析:2.数据非常少的时候 //定义一个变量,用于记录每一次读取的字节数 //判断记录的字节数是否小于1024,表示快读取结束 int count=-1;//-1标记为读取结束 //定义一个字符串用于汇总每次读取的部分字符串内容 String sum=""; //循环读取 while ((count=is.read(bytes))!=-1) { //需要将每一次读取的字节数组转换成字符串 String s=new String(bytes, 0, count); sum+=s; } System.out.println(sum); // 指定文件夹 Set<String> oSet=sc.getResourcePaths("/WEB-INF"); for (String string : oSet) { System.out.println(string); } //response.getWriter().append("Served at: ").append(request.getContextPath()); response.getWriter().append("Servlet1获得静态数据用来访问lq:"); response.getWriter().append("response.getWriter().append方法打印内容"); response.getWriter().append("Servlet1获得静态数据用来访问pq:"); } /** * @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); } }
* 创建动态数据的对象 ServletContext sc=getServletContext(); //创建动态数据 sc.setAttribute("身份账号", "360429200010080987"); //获取动态数据 //强制转型 String b= (String) sc.getAttribute("身份账号"); response.getWriter().append("<h1>ServlectZhuZeA中设置动态数据<h1>"+b); //删除动态数据 sc.removeAttribute("身份账号");
<?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"> <display-name>BookReading</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.jsp</welcome-file> <!-- <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> --> </welcome-file-list> <!-- 静态数据可以共享 --> <context-param> <param-name>uses</param-name> <param-value>hug</param-value> </context-param> <context-param> <param-name>phone</param-name> <param-value>18172928419</param-value> </context-param> <context-param> <param-name>YM</param-name> <param-value>666666</param-value> </context-param> <context-param> <param-name>PW</param-name> <param-value>123456</param-value> </context-param> <context-param> <param-name>PWS</param-name> <param-value>123456</param-value> </context-param> </web-app>
第六点 HttpServlet对象中的HttpServletRequest 与 HttpServletResponse对象HttpServletResponse对象
package com.Servlect; import java.io.IOException; import java.io.PrintWriter; 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 Servlet2 */ @WebServlet("/Servlet2") public class Servlet2 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlet2() { super(); // } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //设置servlet发送的数据支撑HTML格式 response.setContentType("text/html"); //设置发送servlet 浏览html格式 utf-8 response.setCharacterEncoding("UTF-8"); String info="abc"; String info1="20软件三班"; String info2="你好,<div style='color:red;background-Color:green'> <h1 style='color:red;background-Color:blue'>" + "java jsp</h1>" +"<ul><li>1111</li><br><li>2111</li><br><li>3111</li><br></ul>" +"<ol><li>1111</li><br><li>2111</li><br><li>3111</li><br></ol>" +"<hr>" +"<table style='color:red;background-Color:yellow'>课表" + "<th>4</th><tr><td>1</td><td>2</td><td>3<td/><tr/>" +"<th>2</th>4<tr><td>5</td><td>6</td><td>7<td/><tr/>" + "</table>" +"<hr>" +"<hr>" +"<h1>hellow world see you </h1>" + "</div>"; //将数据写出的 PrintWriter pw=response.getWriter(); pw.print(info); pw.print(info1); pw.print(info2); } /** * @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); } }
package com.Servlect; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; 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; /** * Servlet implementation class Servlet3 */ @WebServlet("/Servlet3") public class Servlet3 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() * 图片的下载 */ public Servlet3() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 使用对象完成图片的下载 //设置servlet发送的数据支撑HTML格式 response.setContentType("text/html"); //设置发送servlet 浏览html格式 utf-8 response.setCharacterEncoding("UTF-8"); //设置响应头 response.setHeader("content-disposition", "attachment;filenname=flower.jpg"); ServletContext sa=getServletContext(); String path=sa.getRealPath("/imges/yu.png"); InputStream is =new FileInputStream(path); byte [] bytes =new byte[1024]; int count=-1; OutputStream os=response.getOutputStream(); while((count=is.read(bytes))!=-1) { os.write(bytes,0,count); } //response.getWriter().append("Served at: ").append(request.getContextPath()); } /** * @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); } }
package com.Servlect; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.util.Random; 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 Servlet4 */ @WebServlet("/Servlet4") public class Servlet4 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlet4() { super(); System.out.println("Servlet4正在运行中"); System.out.println("请等待一下下哦"); // 创建码 } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 生成数字,随机数 //100000 -1000000 //[0,1]*900000=[0,900000]+100000 response.setCharacterEncoding("UTF-8"); response.setContentType("text/html"); response.setHeader("refresh", "5"); response.sendRedirect("Servlet2"); try { Thread.sleep(5000); Connection conn = Time.time(); } catch (Exception e) { e.printStackTrace(); } } /** * @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); } }
HttpServletResponse对象
package com; 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; /** * Servlet implementation class Servlet1 */ @WebServlet("/Servlet1") public class Servlet1 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlet1() { super(); System.out.println("Servlet1 在运行HttpServletRequest 的方法"); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获得浏览器的请求,得到请求信息 //得到请求的URL地址 String a=request.getRequestURL().toString(); System.out.println(a); //得到请求的数据 String b=request.getRequestURI(); System.out.println(b); //得到请求的URL地址中附带的参数 String c=request.getQueryString(); System.out.println(c); //得到来访者的IP地址 String d=request.getRemoteAddr(); System.out.println(d); //来访者的主机名 String e=request.getRemoteHost(); System.out.println(e); //来访者的端口号 int f=request.getRemotePort(); System.out.println(f); //得到请求URL地址时使用的方法(重要) String h=request.getMethod(); System.out.println(h); //获取WEB服务器的IP地址 String l=request.getLocalAddr(); System.out.println(l); //获取WEB服务器的主机名 String n=request.getLocalName(); System.out.println(n); //获取WEB服务器的端口号 int m=request.getLocalPort(); System.out.println(m); } /** * @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); } }
package com; import java.io.IOException; import java.util.Arrays; import java.util.Enumeration; import java.util.Map; import java.util.Map.Entry; 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 Servlet2 */ @WebServlet("/Servlet2") public class Servlet2 extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Servlet2() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获得浏览器发送过来的姓名和年龄的数据 String a=request.getParameter("name"); String b=request.getParameter("age"); String c=request.getParameter("phone"); String d=request.getParameter("QQ"); String e=request.getParameter("wexing"); System.out.println("获得浏览器发送给Servlet的数据为:"+a+"--"+b+"--"+c); //当浏览器发送的数据是同一个名称多个不同的数据 //servlet需要使用以下这个方法去接收这种数据 String[] ss=request.getParameterValues("hobby"); System.out.println(Arrays.toString(ss)); //tomcat服务器的编码格式是:ISO-8859-1 //注意:servlet获得浏览器表单发送的数据时, //获得的名称一定要和表单上文本框定义的name属性中的名称保持一致 //当浏览器发送大量数据给servlet的时候 //如果使用getParameter一个个获得,效率太慢 //使用以下方法可以节省代码,加快开发速度 Enumeration<String> e1= request.getParameterNames(); while (e1.hasMoreElements()) { //循环获得的是浏览器发给servlet的数据的名称 String name=e1.nextElement(); if (name.equals("hobby")) { String[] str=request.getParameterValues(name); System.out.println(name+":"+Arrays.toString(str)); }else { String value=request.getParameter(name); System.out.println(name+":"+value); } } //使用Map集合获得浏览器发送的所有数据 Map<String,String[]> map=request.getParameterMap(); for (Entry<String, String[]> entry : map.entrySet()) { String name=entry.getKey(); String[] values=entry.getValue(); System.out.println(name+"%"+Arrays.toString(values)); } System.out.println("运行完成"); System.out.println("http://localhost:8080/Day06-2/Servlet2?name=hubinjkf&age=23&phone=16745637856&qq=2675648967&wexing=16745679076&hobby=%E7%9C%8B%E4%B9%A6&hobby=%E7%9C%8B%E5%B0%8F%E5%AD%A6%E5%A6%B9&hobby=%E5%AD%A6%E4%B9%A0mysql"); } /** * @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); } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <style type="text/css"> *{ background-color: yellow; } </style> </head> <body> <form action="Servlet2" method="get" style="background: pink; font-size: 20px;"> 姓名:<input type="text" name="name"style="color: green;"><br> 年龄:<input type="text" name="age" style="color: purple;"><br> 手机号:<input type="text" name="phone" ><br> QQ:<input type="text" name="qq"><br> 微信:<input type="text" name="wexing"><br> 兴趣爱好:<input type="checkbox" name="hobby" value="看书">看书 <input type="checkbox" name="hobby" value="打游戏">打游戏 <input type="checkbox" name="hobby" value="看小学妹">看小学妹 <input type="checkbox" name="hobby" value="学习java">学习java <input type="checkbox" name="hobby" value="学习mysql">学习mysql <input type="checkbox" name="hobby" value="学习jquery">学习jquery <br> <input type="submit" value="提交"> </form> </body> </html>
第七点中重定向与请求发送的区别
请求转发和重定向区别:
重定向跳转浏览器地址会发生变化,
请求转发浏览器地址不会发生变化
重定向是两次请求,请求转发是一次请求
重定向属于浏览器跳转,请求转发属于服务器内部跳转
重定向跳转页面是不能发送数据,
请求转发是可以携带数据的
1.请求转发是在服务器完成的,重定向是在浏览器完成的
2.请求转发的速度快,重定向速度慢
3.请求转发的是同一次请求,重定向是二次不同的请求
4.请求转发地址栏没有变化,重定向地址栏有变化
5.转发必须是在同一台服务器下完成,重定向可以在不同的服务器下完成的
经常用的代码
reponse.setContentType("text/html"); 设置浏览器格式HTML response.setCharacterEncoding("utf-8")设置编码格式utf-8 response.sendRedirect("Servlet2"); 重定向 //设置响应头 response.setHeader("content-disposition", "attachment;filenname=flower.jpg"); //请求发送 request.getRequestDispatcher("Servlet4") .forward(request, response); response.addHeader("refresh", "1");
运行实例