一.第一级目录:静态资源(HTML CSS JS)
WEB-INF(此文件夹下面的文件不能通过浏览器直接访问)
WEB-INF下第二级目录:WEB.XML 项目配置文件
lib web项目的第三方jar
class class文件存放位置
二.什么是HTTP:
1.超文本传输协议,是互联网最为广泛的一中网络协议,用于定义客户端浏览器和服务器之间交换数据的过程;
特点:先有请求后有响应;
HTTP请求协议包括:请求行/一个,请求头/若干个,请求体;
HTTP相应协议包括:响应行,响应头,响应体;
请求行:POST(请求方式) /post.html (资源路径) HTTP/1.1(协议/版本);
2.HTTP常见请求方式:
①GET请求:
查询请求;
get请求查询的参数可以再浏览器地址栏中显示;
请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接;
没有请求体
例:GET/get.HTML?name=xiaohong&password=123 HTTP/1.1
②post请求:
向服务器提交数据;例如注册用户,将用户信息交给服务器;
post请求会把请求的数据放在http请求体中
例:POST/post.html HTTP/1.1 数据
name=xiaohong&password=123放在请求体中
*区别:实际开发中地址栏中输入的URL是有限制的GET请求会受限制;post数据长度不受限制;
三.Servlet
1.交互式的浏览和修改数据,生成web动态内容;
JAVAWEB三大组件:Servlet/Filter/listener;
2.获取请求行相关信息的相关方法;
getMethod():返回请求方法;
getRequestURL():返回url;
getRemoteAddr():获取请求客户端的IP地址;
getRemoteport():获取请求客户端的端口号;
getLocalAddr():获取服务器当前接受请求的ip地址;
getContextPath():获取url中属于web应用程序的路径;
getProtocol():获取请求行中的协议名和版本;
例:request.getMethod;
3.获取请求头的相关方法;
getHeader(String name):获取一个指定头字段的值,请求头中不包含该字段则返回NULL,包含多个该字段的值,则获取第一个值;
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()){
String element = headerNames.nextElement();
sout(element+":"+request.getHeader(element));
}
4.获取请求参数;
//String name = request.getParameter(“name”);
String password = request.getParameter(“password”);
System.out.println(“用户名”+name);
System.out.println(“密码”+password);
5.HttpServletResponse响应对象;
继承ServletResponse接口,专门用于封装Http响应
①发送响应行:setStatus(int status)
sendError(int Code)
②发送响应头:
addHeader(String name,String value):可重复添加一个同名的响应头字段
setHeader(String name,String value):会覆盖之前添加的同名响应头
setContentLength():设置HTTP响应消息的内容大小,单位是字节;
setContentType():输出内容类型
setCharacterEncoding(String charset)
③发送响应消息体
getOutputStream():获取字节流输出对象为此类型直接输出字节数组中二进制数据;
getWrite():获得字符输出流对象是PrintWriter类型,直接输出文本类型,输出网页文档用此方法;
例:String result = “登陆成功”;
response.setContentType(“text/html;charset = utf-8”);
PrintWriter writer = response.getWriter();
writer.write(result);
6.Servlet生命周期
注意:无论请求多少次Servlet,最多只有一个Servlet实例,如果是多个客户端并发,同时访问Servlet的时候,服务器会启动多个线程分别执行Servlet和service方法
7.ServletConfig对象是它所对应的Servlet对象的相关配置信息;
特点:每一个servlet对象都有一个ServletConfig对象和它相对应;
ServletConfig对象在多个Servlet对象之间是不能共享的;
例:public void init() throws ServletException{ super.init(); ServletConfig servletConfig = this.getServletConfig(); String encoding = servletConfig.getInitParameter("encoding"); sout("encoding"+encoding); }
8.ServletContext
ServletContext即Servlet上下文对象,该对象表示当前的web应用环境信息;
获取ServletContext对象:
①通过ServletConfig的getServletContext()方法可以得到ServletContext对象;
②HttpServlet中直接通过this.getServletContext()获取
*域对象(域对象就是在不同资源之前来共享数据,保存数据,获取数据)
ServletContext对象通常称为Context域对象。ServletContext是我们学习的第一个域对象
三 JSP的页面元素:
a.脚本Scriptlet;
i.<%
String name = “zhangsan”;
out.print(“hello”);
局部变量、java语句
%>
ii.<%!
public String bookName;//全局变量
public void init(){me
boolname = "java书"
}
全局变量、定义方法
%>
iii.<%=输出表达式%>
<%=“hello…”+bookname%>
注意:out.println()不能回车,要想回车:比必须写:"<br/>
"
b.指令
page指令
<%@page…%>
page指令的属性:
language:jsp页面使用的脚本语言;import:导类;pageEcoding:jsp文件自身编码 jsp->java;contentType:浏览器解析jsp的编码;
C.注释
html注释<!-- -->
java注释// /* */
jsp注释<%-- --%>
四.jsp九大内置对象(自带的不需要new也能使用的对象)
out:输出对象,向客户端输出
pageContext
request:请求对象;存储客户端向服务端请求信息;
*request对象常见方法:String getParameter(String name):根据请求的字段名key(input标签的name属性),返回字段值value; String[] getParameterValues(String name):根据请求的字段名key,返回多个字段值value
(checkbox)String setCharacterEncoding(“”编码格式utf-8“”):设置请求编码(Tomcat7之前默认iso-8859-1,tomcat8以后utf-8);
getRequestDispatcher("b.jsp").forward(request,respons);:请求转发
getServletContext():获取项目ServletContext对象
*get和post请求方式的区别:
a.get方式在地址栏上显示请求信息 (但是地址栏容纳的信息有限,4-5kb容纳不下会报错)post不会显示(请求数据大文件用post)
b.文件上传操作,必须是post;
response
session
application
config
page
exception
五.统一请求的编码 request
get方式出现乱码,解决:
a.一个一个改`new String(name.getBytes(“iso-8859-1”),“utf-8”);
b.修改server.xml,一次性的更高Tomcat默认get编码URIEncoding = “utf-8”