Servlet学习复习与浅看jsp

学一点servlet,jsp过时了,然后浅看,然后快进到ssm(先springmvc

Servlet学习复习与浅看jsp - 图1

不多写了直接复习学了啥(也没啥)

Servlet是啥

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

https://www.runoob.com/servlet/servlet-intro.html

Tomcat是啥

有 Java 环境,再安装一款 Web 容器就可以运行 Servlet 代码了

市面上初学者可用tomcat

tomcat下载安装直接百度

https://www.cnblogs.com/LRF-/p/14940259.html

然后我自己捣鼓报错好多,还有啥字符,都是别人走过的弯路,都搜得到

然后idea里面配置一下(spring那边好像都不用配 所以总结快点去学spring)

helloworld前的准备

参考一个就好了

https://blog.csdn.net/weixin_46589442/article/details/107729028?utm_medium=distribute.pc_relevant.none-task-blog-2

找不到javax包,需要把下载tomcat的lib中把servlet-api.jar包导入项目中

…奇奇怪怪
image-20220316130912048.png
Servlet.java:

  1. package testDemo;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.http.HttpServlet;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import java.io.IOException;
  7. public class Servlet extends HttpServlet {
  8. @Override
  9. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  10. resp.getWriter().println("Hello World !!!");
  11. }
  12. }

web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <!-- 配置和映射Servlet -->
  7. <servlet>
  8. <!--Servlet 注册的名字-->
  9. <servlet-name>helloServlet</servlet-name>
  10. <!--Servlet 的全类名-->
  11. <servlet-class>testDemo.Servlet</servlet-class>
  12. <load-on-startup>1</load-on-startup>
  13. </servlet>
  14. <servlet-mapping>
  15. <servlet-name>helloServlet</servlet-name>
  16. <url-pattern>/*</url-pattern>
  17. </servlet-mapping>
  18. </web-app>

奇奇怪怪的整完 然后开始复习

Web目录

Servlet学习复习与浅看jsp - 图3

web.xml很关键,决定配置和部署

web.xml与@WebServlet注解

在 Servlet 中,web.xml 扮演的角色十分的重要,它可以将所有的 Servlet 的配置集中进行管理,但是若项目中 Servelt 数量较多时,web.xml 的配置会变得十分的冗长。这种情况下,注解(Annotation)就是一种更好的选择。

注解直接在类里用

web.xml放一起了

就是说看情况两个各有优势,暂不深入

关于web.xml,启动容器是要去读取这配置文件的配置的

Servlet 生命周期

  1. 初始化阶段
  2. 运行时阶段
  3. 销毁阶段

init()、service()、destory()

一些web.xml的内容

load-on-startup控制开容器顺序(多容器下)

<servlet> 和 <servlet-mapping>元素实现 Servlet 单一映射,还是可以多重的

ServletConfig接口

ServletConfig 对象即可获得当前 Servlet 的初始化参数信息

1.直接从带参的 init() 方法中提取

  1. public class ServletConfigDemo extends HttpServlet {
  2. private ServletConfig servletConfig;
  3. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  4. //获取Servlet得名字
  5. this.servletConfig.getServletName();
  6. }
  7. @Override
  8. public void init(ServletConfig config) throws ServletException {
  9. //从带参init方法中,提取ServletConfig对象
  10. this.servletConfig = config;
  11. }
  12. }
  1. 调用 GenericServlet 提供的 getServletConfig() 方法获得
  1. //调用 GenericServlet 提供的 getServletConfig 方法获得 ServletConfig 对象
  2. ServletConfig servletConfig = this.getServletConfig();

关于获取信息:

  1. public class ReadConfigServlet extends HttpServlet {
  2. private static final long serialVersionUID = 1L;
  3. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  4. throws ServletException, IOException {
  5. response.setContentType("text/html;charset=UTF-8");
  6. PrintWriter writer = response.getWriter();
  7. // 获取ServletConfig对象
  8. ServletConfig config = getServletConfig();
  9. // 获取servletName
  10. String servletName = config.getServletName();
  11. // 返回 servlet 的初始化参数的名称的集合
  12. Enumeration<String> initParameterNames = config.getInitParameterNames();
  13. // 遍历集合获取初始化参数名称
  14. while (initParameterNames.hasMoreElements()) {
  15. // 获取初始化参数名称
  16. String initParamName = initParameterNames.nextElement();
  17. // 获取相应的初始参数的值
  18. String initParamValue = config.getInitParameter(initParamName);
  19. // 向页面输出
  20. writer.write(initParamName + " : " + initParamValue + "<br/>");
  21. }
  22. // 关闭流
  23. writer.close();
  24. }
  25. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  26. throws ServletException, IOException {
  27. doGet(request, response);
  28. }
  29. }

ServletContext接口

  1. 获取上下文初始化参数
  2. 实现 Servlet 之间的数据通讯
  3. 读取 Web 应用下的资源文件

其他不看,数据通讯

  1. import java.io.IOException;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.annotation.WebServlet;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. /**
  8. *
  9. * 使用ServletContext展示网站的访问次数
  10. *
  11. */
  12. @WebServlet("/ShowServlet")
  13. public class ShowServlet extends HttpServlet {
  14. private static final long serialVersionUID = 1L;
  15. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  16. throws ServletException, IOException {
  17. // 获取ServletContext中存放的count属性(即页面的访问次数)
  18. Integer count = (Integer) getServletContext().getAttribute("count");
  19. // 向页面输出
  20. response.setContentType("text/html;charset=UTF-8");
  21. // 若CountServlet已被访问
  22. if (count != null) {
  23. response.getWriter().write("<h3>该网站一共被访问了" + count + "次</h3>");
  24. } else {
  25. // 若CountServlet未被访问,提示先访问CountServlet
  26. response.getWriter().write("<h3>请先访问 CountServlet</h3>");
  27. }
  28. }
  29. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  30. throws ServletException, IOException {
  31. doGet(request, response);
  32. }
  33. }

HttpServletRequest接口&&HttpServletResponse接口

https://www.runoob.com/servlet/servlet-client-request.html

https://www.runoob.com/servlet/servlet-server-response.html

转发请求

Servlet学习复习与浅看jsp - 图4

RequestDispatcher 接口

javax.servlet 包中定义了一个 RequestDispatcher 接口,RequestDispatcher 对象由 Servlet 容器创建,用于封装由路径所标识的 Web 资源。利用 RequestDispatcher 对象可以把请求转发给其他的 Web 资源。

Servlet 可以通过 2 种方式获得 RequestDispatcher 对象:

  1. 调用 ServletContext 的 getRequestDispatcher(String path) 方法,参数 path 指定目标资源的路径,必须为绝对路径;
  2. 调用 ServletRequest 的 getRequestDispatcher(String path) 方法,参数 path 指定目标资源的路径,可以为绝对路径,也可以为相对路径。

重定向

response.sendRedirect()

其他没搞好…

赶着学spring去了,所以就留下坑之后填写

cookie,session,filter…

jsp

JSP 是 Java Server Pages 的缩写,是一种动态网页开发技术。动态网页是指跟静态网页相对的一种网页编程技术。静态网页,随着 HTML 代码的生成,页面的内容和显示基本上不会发生变化,除非修改页面代码。动态网页显示的内容可以随着时间、环境或者数据库操作的结果而发生改变。

JSP 本质是一个 Java 类(Servlet),我们可以在 JSP 页面中嵌入 Java 代码,即:JSP = HTML + Java。

请求 JSP 时,服务器内部会经历一次动态资源(JSP)到静态资源(HTML)的转化。服务器会自动把 JSP 中的 HTML 片段和数据拼接成静态资源响应给浏览器。也就是说,JSP 运行在服务器端,但最终发给客户端的是已经转换好的 HTML 静态页面。