javaweb基础
1、什么是javaweb
Java Web,是用Java技术来解决相关web互联网领域的技术栈
1.1 静态web是什么
指web页面中供人们浏览的数据始终是不变。
1.2 动态web
指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同
2 、什么是tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器
简单一句话说:就是免费的服务器
3 、什么是maven
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
可以用于导入jar包
3.1、配置maven
3.2、为什么配置maven镜像
因为我们都是在外国下载资源(所以很慢)
因此我们我们需要配置maven镜像
3.2、配置maven镜像
nexus-aliyun * Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public3.3、配置maven本地仓库
D:\maven\MyRepository
4、servlet
4.1什么是servlet
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
4.2怎么使用servlet
java直接继承httpservlet接口
可以通过doGet ,doPut来对网页进行操作
4.3web进行咉射
来配置网页的位置
5、ServletContext
5.1什么是ServletContext
web容器在启动的时候,它会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用;
5.2、ServletContext的用法
获取参数,转发
`public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//this.getInitParameter() 初始化参数
//this.getServletConfig() Servlet配置
//this.getServletContext() Servlet上下文
ServletContext context = this.getServletContext();
String username = "dsak"; //数据
context.setAttribute("username",username); //将一个数据保存在了ServletContext中,名字为:username 。值 username
}
`public class GetServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String username = (String) context.getAttribute("username");
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
resp.getWriter().print("名字"+username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String url = context.getInitParameter("url");
resp.getWriter().print(url);
}
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
System.out.println("进入了ServletDemo04");
//RequestDispatcher requestDispatcher = context.getRequestDispatcher("/gp"); //转发的请求路径
//requestDispatcher.forward(req,resp); //调用forward实现请求转发;
context.getRequestDispatcher("/gp").forward(req,resp);
}
5.2HttpServletRequest
5.2.1什么是HttpServletRequest
用来处理一个对Servlet的HTTP格式的请求信息。
5.2.2方法
getParameterNames():取得客户端所发出的请求参数名称.
getParameter():可以让您指定请求参数名称,以取得对应的设定值.
getServerName():请求的服务器.
getProtocol():使用协议.
getMethod():请求方法.
getServerPort():请求端口号.
getContextPath():Context路径.
getServletPath(): Servlet路径.
getRequestURI():URI路径.
getQueryString():查询字符串.
getRemoteAddr():使用者主机IP.
getRemotePort():使用者使用端口号.
getAuthType
public String getAuthType();
返回这个请求的身份验证模式。
getCookies
public Cookie[] getCookies();
返回一个数组,该数组包含这个请求中当前的所有cookie。如果这个请求中没有cookie,返回一个空数组。
getDateHeader
public long getDateHeader(String name);
返回指定的请求头域的值,这个值被转换成一个反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。
如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。
getHeader
public String getHeader(String name);
返回一个请求头域的值。(译者注:与上一个方法不同的是,该方法返回一个字符串)
如果这个请求头域不存在,这个方法返回-1。
getHeaderNames
public Enumeration getHeaderNames();
该方法返回一个String对象的列表,该列表反映请求的所有头域名。
有的引擎可能不允许通过这种方法访问头域,在这种情况下,这个方法返回一个空的列表。
getIntHeader
public int getIntHeader(String name);
返回指定的请求头域的值,这个值被转换成一个整数。
如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。
getMethod
public String getMethod();
返回这个请求使用的HTTP方法(例如:GET、POST、PUT)
getPathInfo
public String getPathInfo();
这个方法返回在这个请求的URL的Servlet路径之后的请求URL的额外的路径信息。如果这个请求URL包括一个查询字符串,在返回值内将不包括这个查询字符串。这个路径在返回之前必须经过URL解码。如果在这个请求的URL的Servlet路径之后没有路径信息。这个方法返回空值。
getPathTranslated
public String getPathTranslated();
这个方法获得这个请求的URL的Servlet路径之后的额外的路径信息,并将它转换成一个真实的路径。在进行转换前,这个请求的URL必须经过URL解码。如果在这个URL的Servlet路径之后没有附加路径信息。这个方法返回空值。
getQueryString
public String getQueryString();
返回这个请求URL所包含的查询字符串。一个查询字串符在一个URL中由一个“?”引出。如果没有查询字符串,这个方法返回空值。
getRemoteUser
public String getRemoteUser
返回作了请求的用户名,这个信息用来作HTTP用户论证。
如果在请求中没有用户名信息,这个方法返回空值。
getRequestedSessionId
public String getRequestedSessionId();
返回这个请求相应的session id。如果由于某种原因客户端提供的session id是无效的,这个session id将与在当前session中的session id不同,与此同时,将建立一个新的session。
如果这个请求没与一个session关联,这个方法返回空值。
getRequestURL
public String getRequestURL();
从HTTP请求的第一行返回请求的URL中定义被请求的资源的部分。如果有一个查询字符串存在,这个查询字符串将不包括在返回值当中。例如,一个请求通过/catalog/books?id=1这样的URL路径访问,这个方法将返回/catalog/books。这个方法的返回值包括了Servlet路径和路径信息。
如果这个URL路径中的的一部分经过了URL编码,这个方法的返回值在返回之前必须经过解码。
getServletPath
public String getServletPath();
这个方法返回请求URL反映调用Servlet的部分。例如,一个Servlet被映射到/catalog/summer这个URL路径,而一个请求使用了/catalog/summer/casual这样的路径。所谓的反映调用Servlet的部分就是指/catalog/summer。
如果这个Servlet不是通过路径匹配来调用。这个方法将返回一个空值。
getSession
public HttpSession getSession();
public HttpSession getSession(boolean create);
返回与这个请求关联的当前的有效的session。如果调用这个方法时没带参数,那么在没有session与这个请求关联的情况下,将会新建一个session。如果调用这个方法时带入了一个布尔型的参数,只有当这个参数为真时,session才会被建立。
为了确保session能够被完全维持。Servlet开发者必须在响应被提交之前调用该方法。
如果带入的参数为假,而且没有session与这个请求关联。这个方法会返回空值。
isRequestedSessionIdValid
public boolean isRequestedSessionIdValid();
这个方法检查与此请求关联的session当前是不是有效。如果当前请求中使用的session无效,它将不能通过getSession方法返回。
isRequestedSessionIdFromCookie
public boolean isRequestedSessionIdFromCookie();
如果这个请求的session id是通过客户端的一个cookie提供的,该方法返回真,否则返回假。
isRequestedSessionIdFromURL
public boolean isRequestedSessionIdFromURL();
如果这个请求的session id是通过客户端的URL的一部分提供的,该方法返回真,否则返回假。请注意此方法与isRequestedSessionIdFromUrl在URL的拼写上不同。
以下方法将被取消
isRequestedSessionIdFromUrl
public boolean isRequestedSessionIdFromUrl();
该方法被isRequestedSessionIdFromURL代替。
getParameter(String)方法**(常用)**
getParameterValues(String name)方法**(常用)**
getParameterNames()方法(不常用)
getParameterMap()方法**(编写框架时常用)**
5.3、HttpServletResponse
5.3.1、什么是HttpServletResponse
HttpServletResponse对象是有关于对客户端请求之响应,您可以利用它来设定一些要响应的讯息,例如标题信息、响应状态码等.
5.3.2 、HttpServletRespose常用的方法
setHeader():是一个通用的标头设定方法,您可以用它来设定任何「名称/值」的标头.
setIntHeader():是专门用来设定整数值标头的版本.
setDateHeader():是setHeader()的Date设定版本,第二个参数是设定Date的Long数值,0表示GMT 1970/1/1 00:00。
(Note:以上3个函数用来设置HTTP协议的表头,必须对HTTP协议有些了解才能正确使用).
setStatus():是用来设定回应的状态码,例如404 Not Found,HttpServletResponse类中提供了一些助忆常数设定,例如SC_NOT_FOUND就是表示404状态码(可以在Servlet API文件中查询相关的助忆常数).
sendError():会根据服务器的预设错误网页回报方式显示错误讯息.
sendRedirect():设置重定向页面.
getWriter():取得PrintWriter对象,由它来写出响应至服务器的本体信息.
6、cookie,Session
6.1、什么是cookie
储存在用户本地终端上的数据
6.2、cookie的常用方法
方法名称 | 说明 |
---|---|
void setMaxAge(int expiry) | 设置cookie的有效期,以秒为单位 |
void setValue(String value) | 在cookie创建后,为cookie赋予新的值 |
String geyName() | 获取cookie的名称 |
String getValue() | 获取cookie的值 |
int getMaxAge() | 获取cookie的有效时间,以秒为单位 |
一个网站cookie是否存在上限!聊聊细节问题
- 一个Cookie只能保存一个信息;
- 一个web站点可以给浏览器发送多个cookie,最多存放20个cookie;
- Cookie大小有限制4kb;
- 300个cookie浏览器上限
6.3、什么是Session
Session是指存储特定用户会话所需的属性及配置信息
6.4、Session的常用方法
方法名称 | 说明 |
---|---|
public void setAttribute(String name,String value) | 设定指定名字的属性的值,并将它添加到session会话范围内,如果这个属性是会话范围内存在,则更改该属性的值。 |
public Object getAttribute(String name) | 在会话范围内获取指定名字的属性的值,返回值类型为object,如果该属性不存在,则返回null。 |
public void removeAttribute(String name) | 删除指定名字的session属性,若该属性不存在,则出现异常。 |
public void invalidate() | 使session失效。可以立即使当前会话失效,原来会话中存储的所有对象都不能再被访问。 |
public String getId( ) | 获取当前的会话ID。每个会话在服务器端都存在一个唯一的标示sessionID,session对象发送到浏览器的唯一数据就是sessionID,它一般存储在cookie中。 |
public void setMaxInactiveInterval(int interval) | 设置会话的最大持续时间,单位是秒,负数表明会话永不失效。 |
public int getMaxInActiveInterval() | 获取会话的最大持续时间,使用时候需要一些 |
6.4、session和cookie的区别
session 和 cookie 的作用有点类似,都是为了存储用户相关的信息。 不同的是, cookie 是存储在本地浏览器,而 session 存储在服务器。 存储在服务器的数据会更加的安全,不容易被窃取。
7、jsp
7.1、什么是jsp
JSP将Java代码和特定变动内容嵌入到静态的页面中,实现以静态页面为模板,动态生成其中的部分内容。
<html>
<head>
<title>第一个 JSP 程序</title>
</head>
<body>
<%
out.println("Hello World!");
%>
</body>
</html>
7.2、jsp九大内置对象
- PageContext 存东西
- Request 存东西
- Response
- Session 存东西
- Application 【SerlvetContext】 存东西
- config 【SerlvetConfig】
- out
- page
- exception
7.2.1、内置对象的周期
Application>Session>Request >PageContext
8、过滤器
8.1、什么是过滤器
Filter:过滤器 ,用来过滤网站的数据;
8.2过滤器的使用方法
继承过滤器的接口