一、JavaWeb概念
2. Web服务器
tomcat
2.1 发布一个网站
-
将自己写的网站,放到tomcat中指定的web应用的文件夹下(webapps)
--webapps: Tomcat服务器的web目录 -Root -example:网站的目录名 - WEB-INF -classes:java程序 -lib:web应用所依赖的jar包 -web.xml 网站的配置文件 - index.xml 默认的首页 -static -css -style.css -js -img
3. Servlet
3.1 servlet简介
- 开发Servlet程序的步骤
- 编写一个类,实现Servlet皆苦
- 把开发好的Java类部署到web服务器中
把实现了Servlet接口的Java程序叫做,Servlet。
3.2 HelloServlet
Servlet接口Sun有两个默认的实现类:HttpServlet,GenericServlet
1、构建一个普通的Maven项目,删掉里面的src目录,以后就在项目里面建立Moudle;
这个空的过程就是maven的主工程
2、maven父子工程的理解:
# maven父工程的pom.xml文件中会有,module标签表示子工程
<modules>
<module>servlet-01</module>
</modules>
#maven子工程的pom.xml文件中会有,parent标签表示子工程
<parent>
<artifactId>javaweb-02-servlet</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
父项目中的java,子项目可以直接使用;反之不成立
3.3 Maven环境优化
1、修改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">
<display-name>Archetype Created Web Application</display-name>
</web-app>
2、将maven的结构搭建完整
3、编写一个Servlet程序
1 编写一个普通类
2 实现Servlet接口,这里直接继承HtppServlet
public class HelloServlet extends HttpServlet {
// 由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// ServletOutputStream outputStream = resp.getOutputStream();
PrintWriter writer = resp.getWriter(); // 响应流
writer.print("HelloWorld");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
4、编写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">
<!-- 注册Servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.atguigu.HelloServlet</servlet-class>
</servlet>
<!-- Servlet的请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
5、 配置Tomcat
3.4、Servlet原理
Mapping问题:
1 一个Servlet指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
2 一个Servlet指定多个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello1</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello2</url-pattern>
</servlet-mapping>
3一个Servlet指定一个通用映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello/*</url-pattern>
</servlet-mapping>
4 一个Servlet指定通配符
<!-- 注册404-->
<servlet>
<servlet-name>error</servlet-name>
<servlet-class>com.atguigu.servlet.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>error</servlet-name>
<url-pattern>/
*</url-pattern>
</servlet-mapping>
5、优先级问题
制定了固有的映射路径优先级最高,/hello
如果找不到就会走默认的处理请求,/*