支持JSP的服务器很多,Tomcat,Resin,Weblogic,WebSphere等,
Tomcat,Resin 开源免费。Weblogic,WebSphere 重量级服务器,价格昂贵。
HttpServlet 的 源码在: javax.servlet-api.3.0.1-source.jar 包中;
【Servlet实现类】extends HttpServlet
HttpServlet extends GenericServlet
GenericeServlet implements Servlet接口
/WEB-INF/classes
具体请求路径写法:
OneServlet
/test/one
【含义】:如果当前请求从网络名称后面截取的【请求路径】,与当前请求路径完全一致,说明当前用户请求的是这个Servlet
例子:
http://localhost:8080/myWeb/test/one ok
http://localhost:8080/myWeb/bb/test/one 不予理睬
前置条件请求路径写法:
OneServlet
/test/*
【含义】:如果当前请求从网站名称后面截取的【请求路径】以“/test/”为开头,表示本次请求是OneServlet; *代表任意字符串,包括没有;
例子:
http://localhost:8080/myWeb/test/meimei.jpg ok
http://localhost:8080/myWeb/bb/test/one 不予理睬
http://localhost:8080/myWeb/test/ ok
后置条件请求路径写法:一定不能以斜线开头,习惯把Servlet资源后缀名默认为.do
OneServlet
*.do
【含义】:如果当前请求从网站名称后面截取的【请求路径】,以".do"为结尾,表示本次请求是OneServlet
例子:
http://localhost:8080/myWeb/test/one.do ok
http://localhost:8080/myWeb/test/one.do?name=mike ok
http请求协议包:
【请求行】:
请求地址:http://localhost:8080/myWeb/test/one.do
请求方式:get
【请求头】{name:mike}
【空白行】
【请求体】
通配符请求路径:
OneServlet【吃瓜群众】
/*
【含义】:对于当前网站任何资源的请求都要交给当前的Servlet
例子:
http://localhost:8080/myWeb/test/one.htm ok
http://localhost:8080/myWeb/bb/test/one.do ok
http://localhost:8080/myWeb ok
http://localhost:8080/myWeb/test/one.do
【具体请求路径】>【前置条件】>【通配符条件】>【后置条件】
【请求对象】读取【请求协议包中内容】
【请求行】:请求文件地址
使用的请求方式
【请求头】和【请求体】:请求参数
中文参数乱码问题:
【原因】:
浏览器采用【GET】发送请求,请求参数保存在【请求头】,【请求头】中的内容是由Tomcat来负责组装,Tomcat 9.0默认使用的字符集utf-8
浏览器采用【POST】发送请求,请求参数保存在【请求体】,【请求体】内容是由请求对象负责组装的。请求对象默认使用 ISO-8859-1(欧洲语境的内容)
【解决方案】:
针对【post】方式:在request进行装箱操作之前,为其指定正确的字符集: 用下面的代码
request.setCharacterEncoding(“utf-8”)
request.getParameter(“参数名”)
老版本Tomcat,【get】方式,通知Tomcat使用正确的字符集
修改Tomcat/conf/server.xml,增加一个下面红色的属性: