我们把实现了Servlet接口的java程序叫做 Servlet
Servlet接口在SUN公司有两个实现类 :HttpServlet ,GenericServlet
1.构建一个普通的Maven项目并且导入servlet和jsp依赖
MAVEN servlet和jsp依赖 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency>2.删掉里面的src目录 在项目中建立Moudle子项目 (这个子项目为mavenweb项目)
父项目中有
<modules> <module>servlet01</module> </modules>子项目中有
<parent> <artifactId>javaweb01-servlet</artifactId> <groupId>com.lei</groupId> <version>1.0-SNAPSHOT</version> </parent>子项目可以使用父项目中导入的jar包。
3.在子项目中新建 java和resources文件夹
java文件夹里面写Servlet程序 :resources文件夹中放资源
4.更换web.xml为最新版本 匹配Tomcat
注意:如果web.xml与Tomcat不兼容 无法运行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"> <display-name>Welcome to Tomcat</display-name> <description> Welcome to Tomcat </description> </web-app>5.编写一个Servlet程序
1.编写一个普通类
2.实现Servlet接口
package com.lei.servlet; 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; public class servlet 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 doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doGet(req, resp); } }6.编写Servlet的映射
原因:我们写的是JAVA程序 ,但是要通过浏览器访问 ,浏览器需要连接到WEB服务器
所以我们要在WEB服务器中注册我们写的Servlet程序,还需要给他一个浏览器能够访问的路径。
如图在web.xml文件中映射Servlet程序
7.配置Tomcat服务器
上图启动成功
1.一个Servlet可以指定一个映射路径 2.一个Servlet可以指定多个映射路径
通过这些路径访问同一个Servlet 接口
3.一个Servlet可以指定一个通用映射路径
web容器在启动的时候,它会为每个web程序都创建一个ServletContext对象,它代表了当前的web应用:
ServletContext是凌驾于所有Servlet对象上的一个对象。
所有Servlet共享同一个ServletContext对象 因此我们可以通过ServletContext容器实现 Servlet之间的数据互通。
1.首先创造两个Servlet对象
2.在HelloServlet这个对象中 获取ServletContext对象 并传递一些信息
把一个数据存在 ServletContext中 名为 un ,值为username
public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("Hello"); //this.getInitParameter() 初始化参数 //this.getServletConfig() Servlet 配置 //this.getServletContext() Servlet 上下文对象 ServletContext sc1 = this.getServletContext(); String username="若邪"; sc1.setAttribute("un",username);// 把一个数据存在 ServletContext中 名为 un ,值为username }3.在UserServlet中 获取这个值 并输出在服务器上
测试访问结果
1.在web.xml中配置初始化参数
2.通过ServletContext获取初始化参数
3.输出结果
上面是请求转发 :A访问B B把C的内容转发给A
下图是重定向:A访问B B让A去访问C
把请求转发的路径设置为/s
public class Servlet004 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { ServletContext context = this.getServletContext(); RequestDispatcher requestDispatcher =context.getRequestDispatcher("/s");//请求转发的路径 requestDispatcher.forward(req,resp); // 可以合并成 context.getRequestDispatcher("/s").forward(req,resp); }这样你访问该路径 就会转移到/s路径下的内容
Properties
在java目录下新建Properties在resourcrs目录下新建Properties都放在classes /classpath路径下
在Servlet中获取资源
结果导出
