JavaWeb
1、基本概念
https://blog.csdn.net/qq_19782019/article/details/80292110
动态web:
2、web服务器
2.1技术讲解
2.2web服务器
3、Tomcat详解
3.1安装
访问测试:http://localhost:8080/
3.2配置
3.3发布一个网站
4、HTTP
4.1 什么是http
4.2 两个时代
4.3 HTTP请求
##4.4 Http响应
5、Maven
5.1 Maven项目架构管理工具
5.2 安装Maven
5.3 阿里云镜像
5.4 本地仓库
5.6 在IDEA中使用Maven
1、启动IDEA
2、创建一个MavenWeb项目
3、IDEA项目创建成功后,看一眼Maven配置
5.7 创建一个普通Maven项目
5.8 标记文件夹功能
5.9 在IDEA中配置Tomcat
5.10 pom文件
6、Servlet
6.1 Servlet简介
6.2 HelloServlet
public class HelloServlet extends HttpServlet {
//由于get和post只是请求实现的不同方式,可以互相调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter writer = resp.getWriter();//响应流
writer.print("Hello Servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.cc.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
6.3 Servlet原理
6.4 Mapping
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>error</servlet-name>
<servlet-class>com.cc.servlet.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>error</servlet-name>
<url-pattern>/*</url-pattern>
默认走404,http://localhost:8080/s1/hello走HelloServlet
6.5 ServletContext
1、共享数据
放置数据的类:
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext Context = this.getServletContext();
String username = "cc";
Context.setAttribute("username",username);//将一个数据保存在了ServletContext中,键值对。
}
}
读取数据的类:
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);
}
}
2、获取初始化参数
<!--配置一些web应用初始化参数-->
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
</context-param>
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext context = this.getServletContext();
String url = context.getInitParameter("url");
resp.getWriter().print(url);
}
3、请求转发
@Override
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);
}
4、读取资源文件
配置文件在resources下可以导出,在java下不能导出,要添加如上配置
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
InputStream is = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties prop = new Properties();
prop.load(is);
String username = prop.getProperty("username");
String pwd = prop.getProperty("password");
resp.getWriter().print(username+":"+pwd);
}
db.rpoperties:
username = root
password = 123456
6.6 HttpServletResponse
1、简单分类
2、下载文件
public class FileServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取文件路径
String realPath = "E:\\code\\IntelliJ IDEA 2021.3.1\\project\\javaweb-02-servlet\\response\\src\\main\\resources\\1.jpg";
System.out.println("下载文件路径:"+realPath);
//获取文件名
String filename = realPath.substring(realPath.lastIndexOf("\\") + 1);
//设置浏览器能够支持下载,中文文件名URLEncoder.encode编码
resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
//获取下载文件输入流
FileInputStream in = new FileInputStream(realPath);
//创建缓冲区
int len = 0;
byte[] buffer = new byte[1024];
//获取OutputStream对象
ServletOutputStream out = resp.getOutputStream();
//将FileInputStream流写入到buffer缓冲区,使用ServletOutputStream将缓冲区数据输出到客户端
while ((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
in.close();
out.close();
}
3、验证码功能
public class ImageServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//浏览器3秒自动刷新一次
resp.setHeader("refresh","3");
//在内存中创建图片
BufferedImage image = new BufferedImage(80,20,BufferedImage.TYPE_INT_RGB);