1. Servlet简介
·Servlet是一门开发动态web的技术。
·Sun公司在这些API中提供一个接口叫做:Servlet。开发一个Servlet程序,只需要两步:
1⃣️编写一个类,实现Servlet接口。
2⃣️把开发好的java类部署到web服务器中。
把实现了Servlet接口的Java程序叫做Servlet。
2. HelloServlet
1. 构建一个普通的maven项目,删掉里面的src目录,以后就在项目里直接建立module
2. 关于Maven父子工程的理解
·父项目中会有:
<modules>
<module>"子模块名字"</module>
</modules>
·子项目中会有:
<parent>
//父项目中的GAV (groupId,artifactId,version)信息
</parent>
父项目中的Java子项目可以直击使用
3. 编写一个Servlet程序
一、编写一个普通Java类
二、实现Servlet接口,这里直接继承HttpServlet
(想用HttpServlet,要先在Pom.xml中导入 servlet-api 和 jsp-api 的依赖)
重写doGet() 方法和 doPost() 方法 的内容。
三、编写Servlet的映射
为什么需要映射: 我们写的是Java程序,但是需要浏览器访问,而浏览器需要连接Web服务器,所以我们需要在Web服务中(web.xml)注册我们写的Servlet,还需要给他一个浏览器能够访问的路径。
四、配置Tomcat
五、启动测试
4. Servlet原理
5. Mapping
6. ServletContext (基本不用,仅做了解)
web容器在启动的时候,它会为每个Web程序都创建一个对应的ServletContext对象,它代表了当前的Web应用;
·共享数据
我在这个Servlet保存的数据,可以在另外一个Servlet中拿到:
ServletContext context = this.getServletContext();
String username = "zhangsan";
context.setAttribute("username", username); // 类似map存储形式
ServletContext context = this.getServletContext();
String username = (String) context.getAttribute("username");
resp.getWriter().print(username); // resp 为响应参数
·获取初始化参数
web.xml:
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/mybatis</param-value>
</context-param>
servlet:
ServletContext context = this.getServletContext();
String url = context.getInitParameter("url");
resp.getWriter().print(url);
·请求转发
·读取资源文件
7. HttpServletResponse
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse对象;
·如果要获取客户端请求过来的参数:找HttpServletRequest
·如果要给客户端响应一些信息:找HttpServletResponse
·重定向 (一定要注意路径问题,否则404)
HelloServlet:
resp.sendRedirect("url")
web.xml:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping›
8. HttpServletRequest
HttpServletRequest 代表客户端的请求,用户通过Http协议访问服务器,Http请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息。
·获取前端传递的参数
LoginServlet.java:
String username = req.getParameter("username");
String password = req.getParameter("password");
String[] hobbys = req.getParameterValues("hobbys");
·请求转发
LoginServlet.java:
req.getRequestDispatcher("转发页面路径").forward(req,resp);