javaweb学习笔记3
javaweb概念
javaweb指所有通过java语言编写的通过浏览器访问的程序的综合
javaweb是基于请求和响应来开发
请求:
是指客户端个服务器发送数据,request
响应:服务器给客户端回传数据为response
web资源的分类
按实现技术和呈现的效果不同分为静态和动态
html,css,js,txt,jpg。。。属于静态资源
jsp页面,servlet
tomcat
下载tomcat安装包
下载地址
配置环境变量
启动tomcat
找到tomcat下的bin的startup.bat双击启动或者cmd输startup.bat 或者catakina run
停止tomcat
找到tomcat下的bin下的shutdown.bat
修改端口号
找到conf目录下的server.xml
修改port属性1-65535
如何部署web工程到tomcat上
1.将工程目录拷贝到webapps目录下
2.找到tomcat文件夹下的conf\Catalina\localhost创建配置xml文件指定目录和为工程目录
<Context path="xml文件的名字" docBase=“工程目录”>
3.https//:ip:port访问root的欢迎界面
优先访问index.html文件
整合tomcat到idea
创建一个web工程在工程点击右键选择add 选择javaweb即可创建一个Javaweb工程
servlet
1.servlet是javaee的规范之一,接口
2.是javaweb三大组件之一 servlet程序,filter过滤器,listener监听器
3.servlet是运行在服务器上的java小程序,他可以接收客户端发送的请求,并响应数据给客户端
创建一个servlet程序
编写一个类实现servlet接口实现service方法处理请求响应数据,web.xml中配置访问地址
1.创建一个实现servlet接口的类,重写service方法
package test;
import jakarta.servlet.*;
import java.io.IOException;
public class Servlettest implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//处理请求和响应的方法
System.out.println("bei1fan");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
2.修改xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!-- servlet给tomcat配置servlet程序-->
<servlet>
<servlet-name>Servlettest</servlet-name>
<!-- 全类名-->
<servlet-class>test.Servlettest</servlet-class>
</servlet>
<!-- 给servlet配置访问地址-->
<servlet-mapping>
<servlet-name>Servlettest</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
sevrlet的生命周期
1.执行servlet构造器
2.执行init初始化
3.执行service方法(每次访问执行)
4.执行destroy方法销毁(停止时执行)
get,post分发
方式1
HttpServletRequest httpServletRequest= (HttpServletRequest) servletRequest;
String method = httpServletRequest.getMethod();//获取请求方式get,post
方式2继承Httpservlet,重写doget,dopost方法
public class Servlettest2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
或者直接创建servlet文件
servlet类的继承体系
自定义servlet程序继承httpservlet类,httpservlet类继承genericservlet类。genericservlet实现servlet接口
servlet负责定义访问规范
genericservlet实现空实现
httpservlet实现了请求的分发处理
servletConfig类的三大作用
1.获取servlet程序的别名servlet name的值
2.回去初始化参数
3.获取servletcontext对象
重写init方法需要调用父类的init方法对config对象进行保存
servletcontext对象
1.servletcontext是一个接口,他表示servlet上下文关系
2、一个web工程只能有一个servletcontext对象实例
3.servletcontext对象是一个域对象(可以象map一样存取数据的对象)
存数据:setattribute()
取数据:getattribute()
删除数据:removeattribute()
servletcontext对象的作用
1.获取web.xml配置的上下文参数
2.获取当前工程的路径
3.获取工程部署后再服务器硬盘上存储数据的绝对路径
4.像map一样存取数据
http协议格式
客户端发给服务器的数据叫做请求
1.get请求
请求行:请求方式和请求资源路径,请求的协议和版本号
请求头:key:value组成
2. post请求
1.请求行
2.请求头
空行
3.请求体 发送给服务器的数据
常见的请求头
accept:告诉服务器可以接收的数据类型
accpet—language 可以接收的语言类型
user-agent:就是浏览器的信息
accpet—encoding:表示告诉服务器可以接受的数据编码格式
host:表示请求的服务器ip和端口号
connection:告诉服务器当前连接如何处理
keep alive 回传完数据不要马上关闭
closed 马上关闭释放资源
referer 表示请求发起时,浏览器地址栏中的地址
content-tepy 表示发送的数据的类型
appliction/x-www-from-urlenconcoed
multipart/from-data 表示以多段的形式提交数据给服务器
content-length:表示所发送的数据的长度
cache-control:表示如何控制缓存
响应的http协议格式
1.响应行
响应的协议和版本号,响应码和响应状态描述
2.响应头
空行
3.响应体:回传的数据
常见的响应头
server:表示服务器信息
content-type 表示响应体的数据类型
content-langth响应体的长度
date:请求响应的时间
常见的响应码
200:表示请求成功
302:表示请求重定向
404:表示请求已经收到,但是所请求的数据不存在
500:表示服务器内部出现错误
HttpServletrRequest类
每次有请求进入tomcat服务器。tomcat服务器就会把请求过来的http协议信息解析好封装到requst对象中,然后传递到service方法中给我们使用,我们通过httpservletrequest对象获取所有请求信息
HttpServletRequest类的常用方法
1.getrequestURI() 获取请求的资源路径
2.getRequestURL()获取绝对路径
3.getRemoteHost()获取客户端的ip地址
4.getHeader()获取请求头
5.getParameter()获取请求的参数
6.getParameterValues()获取请求的参数多个值使用
7.getMethod()获取get、post
8.setAttribute(key,value)设置域数据
9.getAttribute(key)获取域数据
10.getRequestDispatcher()获取请求转发对象
base标签的作用
base标签设置页面的相对路径的参照的地址
<base href="">
HttpServletResponse类
包含响应的对象,可以进行设置
1.输出流
字节流:getOutputStrieam()
字符流:getWriter()
请求重定向
当服务器不断地更新可能某个地址或者respones接口被其他接口取代,是需要将访问之前地址的请求重定向给新的地址
代码实现
public class Response1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("到此一游");
resp.setStatus(302);//设置状态码302表示需要重定向
resp.setHeader("location","http://localhost:8091//javaweb3_war_exploded/R2");//设置响应头
}
}
public class Response2 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("response2's ");
}
}
方法2
public class Response1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.sendRedirect("http://localhost:8091//javaweb3_war_exploded/R2");
}
}