Day39-Servlet
解决遇到的问题
- maven默认web项目中的web.xml版本问题
替换web.xml为webapp4.0版本和tomcat一致
<?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"
metadata-complete="true">
</web-app>
Maven仓库的使用
[Maven仓库地址](Maven Repository: Search/Browse/Explore (mvnrepository.com))
- 搜索并且找到自己想要的
- 选择需要的版本,尽量选择人多使用的
- 下载或者复制
- 插入到pom.xml中
servlet初使用
- web.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"
metadata-complete="true">
<!--web.xml中是配置我们web的核心应用-->
<!--注册servlet-->
<servlet>
<servlet-name>helloxiaozhao</servlet-name>
<servlet-class>com.xiaozhao.HelloXiaoZhao</servlet-class>
</servlet>
<!--一个Servlet对应一个mapping-->
<servlet-mapping>
<servlet-name>helloxiaozhao</servlet-name>
<!--请求路径-->
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
- servlet类
package com.xiaozhao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author 小龚
* @create 2022-08-26 17:25
*/
public class HelloXiaoZhao extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//响应类型:html
resp.setContentType("text/html");
//设置字符类型
resp.setCharacterEncoding("utf-8");
//获取响应的输出流
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>老婆,你好!</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello XiaoZhao!</h1>");
out.println("</body>");
out.println("</html>");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
- 运行(通过请求路径)
Servlet
Servlet简介
Servlet类在Sun公司有两个默认的实现类:HttpServlet,
- Servlet就是Sun公司开发动态web的一门技术
- Sun公司在这些api中提供了一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成来两个小步骤:
- 编写一个类实现Servlet接口
- 把开发好的java类部署到web服务器中
把实现Servlet接口的java程序叫做Servlet
HelloServelt
- 构建一个普通的Maven项目,删掉里面的src目录,以后我们的学习就在这个项目里面建立Moudle;这个空的工程就是Maven主工程
- 在pom.xml中导入需要的包;
导入失败需要手动导入
找到Maven仓库里的文件夹
- 新建Moudle
- 关于Maven父子工程的理解
父项目中会多一个moudle
<modules>
<module>servlet01</module>
</modules>
子项目中会多一个parent
<parent>
<artifactId>javaweb-02-maven</artifactId>
<groupId>com.xiaozhao02</groupId>
<version>Unknown</version>
</parent>
父项目中的jar包子项目可以使用
son extends parent
- Maven环境优化
将web.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"
metadata-complete="true">
</web-app>
添加源代码目录和资源目录
- 编写一个Servlet程序
package com.xz.servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @author 小龚
* @create 2022-08-27 1:35
*/
public class HelloServlet extends HttpServlet {
//由于get或者post只是请求实现不同的方法,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//ServletOutputStream ot = resp.getOutputStream();
PrintWriter writer = resp.getWriter();//响应流
resp.setCharacterEncoding("utf-8");
writer.print("你好小赵!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
- 编写Servlet的映射
为什么需要映射:
我们写的是java程序,但是通过服务器访问,而浏览器需要连接web服务器,所以我们需要在web服务器中注册我们写的Servlet,还需要给他一个浏览器访问的路径。
<?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"
metadata-complete="true">
<!--注册Servlet-->
<servlet>
<servlet-name>helloxiaozhao</servlet-name>
<servlet-class>com.xz.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet的请求路径-->
<servlet-mapping>
<servlet-name>helloxiaozhao</servlet-name>
<url-pattern>/helloxiaozhao</url-pattern>
</servlet-mapping>
</web-app>
- 配置Tomcat
- 启动测试
控制台输出