JavaWeb全套
<servlet>
<servlet-name>mm</servlet-name><!--声明一个变量存储servlet接口实现类路径-->
<servlet-class>com.example.JavaWeb.controller.OneServlet</servlet-class><!--声明servlet接口实现类类路径-->
</servlet>
<!--
Tomcat: String mm = "com.example.JavaWeb.controller.OneServlet"
-->
<!--为了降低用户访问Servlet接口实现类难度,需要设置简短请求别名-->
<servlet-mapping>
<servlet-name>mm</servlet-name>
<url-pattern>/one</url-pattern><!--设置简短别名,要以"/"开头-->
</servlet-mapping>
<!--如果现在浏览器向Tomcat索要OneServlet时地址
http://localhost:8080/JavaWeb/one
-->
1.网站所有的Servlet接口实现类的实例对象,只能由Http服务器负责创建
开发人员不能手动创建servlet接口类的实例对象
2.在默认的情况下,Http服务器接收到对于当前Servlet接口实现类第一次请求时
自动创建Servlet接口实现类的实例对象
在手动配置的情况下,可以实现Http服务器在启动的时候自动创建Servlet接口实现类的实例对象
3.多个用户访问服务器,在Http服务器运行期间,一个Servlet接口实现类只能创建出一个实例对象
4.在Http服务器关闭时刻,自动将网站所有的servlet对象进行销毁
功能
1)可以读取请求协议包中请求行信息
2)可以读取请求协议包中的请求头或请求体中的请求参数信息
3)可以代替代替浏览器向Http服务器申请资源文件调用
//1.通过请求对象,读取请求行中的url信息
String url = request.getRequestURL().toString();
//2.通过请求对象,读取请求行中的method信息
String method = request.getMethod();
//3.通过请求对象,读取请求行中的uri信息
String uri = request.getRequestURI();
System.out.println("url:"+url);
System.out.println("method:"+method);
System.out.println("uri:"+uri);
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()){
String paramName = (String)parameterNames.nextElement();
String value = request.getParameter(paramName);
System.out.println("请求参数的名称: "+paramName+" 请求的参数值: "+value);
}
以Get方式发送中文参数内容,得到正常结果,请求参数保存在请求头中
以Post方式发送中文内容,会得到乱码,请求参数保存在请求体中
原因在于解码采用的字符集
<center>
<form action="http://localhost:8080/myWeb/one" method="post">
请输入值:<input type="text" name="userName">
<input type="submit" value="post请求方式">
form>
center>
req.setCharacterEncoding("utf-8");
String userName = req.getParameter("userName");
System.out.println("从请求体中获取的参数值:"+userName);
功能:
1)将执行结果以二进制形式写入到[响应体]
2)设置响应头中[content-type]属性值,从而控制浏览器使用
对应编译器将响应体二进制数据编译成[文字、图片、视频、命令]
3)设置响应头中[location]属性,将一个请求地址赋值给location
从而控制向浏览器向指定服务器发送请求
package com.example.selvlet_04.Controller;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
public class OneServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String result = "Hello,World";//执行结果
//响应对象将结果写入响应体中
//1.通过响应对象,向Tomcat索要输出流
PrintWriter out = response.getWriter();
//2.通过输出流将执行的结果以二进制的形式写入响应体中
out.write(result);
}//doGet执行完毕
}
package com.example.selvlet_04.Controller;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;
public class ThreeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String result = "Java
Mysql
HTML
";//既有文字信息,又有html标签命令
String result2 = "红烧排骨
糖醋里脊";
response.setContentType("text/html;charset=utf-8");//在响应头设置内容类型
PrintWriter out = response.getWriter();
out.println(result);
out.println(result2);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
package com.example.selvlet_04.Controller;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class FourServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String result = "http://www.baidu.com";
response.sendRedirect(result);
}
/*
浏览器在接收响应包之后,如果
发现响应头存在location属性
自动通过地址栏向location指定网站发送请求
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}