php+mysql 网站建设,整站seo服务,做网站用什么代码,厦门seo建站文章目录 一、介绍二、入门案例导入servlet-api的解决办法 一、介绍
概念#xff1a;server applet#xff0c;即#xff1a;运行在服务器端的小程序
Servlet就是一个接口#xff0c;定义了Java类被浏览器访问到#xff08;tomcat识别#xff09;的规则。
将来我们定义… 文章目录 一、介绍二、入门案例导入servlet-api的解决办法 一、介绍
概念server applet即运行在服务器端的小程序
Servlet就是一个接口定义了Java类被浏览器访问到tomcat识别的规则。
将来我们定义一个类实现Servlet接口复写方法tomcat就可以识别这个类我们就称它为一个Servlet
作用
获取用户客户端发给我的数据调用DAO中的方法完成添加功能在控制台打印添加成功
Servlet用大白话来说就像是一个在Web服务器上运行的Java小程序它专门用来处理来自浏览器或其他客户端的请求并根据这些请求动态生成响应内容。你可以想象一下每当我们在网页上点击按钮或链接发送请求时Servlet就在后台接收到这个请求并进行一系列操作比如从数据库查询数据、执行业务逻辑或者计算结果。
Servlet并不是直接给用户看的一个静态HTML页面而是负责生成这些动态页面背后的内容。当Servlet完成工作后会把生成的结果可能是HTML页面的一部分、JSON数据、XML数据或者其他格式的数据返回给客户端客户端通常是浏览器再将这些数据呈现给我们用户。
打个比方如果你在网上购物当你点击“查看购物车”按钮时实际上就是向服务器发送了一个请求。这时服务器上的Servlet就发挥作用了它读取你的购物车信息计算总价等细节然后生成包含你购物车商品列表的网页并传回给你这样你就能看到自己挑选的商品了。
总之Servlet是Java语言提供的一种强大工具用于开发和扩展Web服务器功能实现与用户的交互式通信从而创建动态、功能丰富的Web应用程序。 二、入门案例
在web目录下新建add.html文件
!DOCTYPE html
html langen xmlns:thhttp://www.thymeleaf.org
headmeta charsetUTF-8titleTitle/title
/head
body
form actionadd methodpost名称input typetext namefname价格input typetext nameprice库存input typetext namefcount备注input typetext nameremarkinput typesubmit value添加
/form
/body
/html新建AddServlet类 如果是一个普通类它是不能够去获取用户发给我的数据的此时需要让它继承HttpServlet而这个类并不在JDK包里而在servlet-api包下。 导入servlet-api的解决办法 将servlet-api导入到项目里去 在父项目的根目录新建lib文件夹然后将servlet-api引入。 这种情况是在很多个Module共享的默认情况下和module是没有关系的。 第一步右击将它添加为库 然后从子项目中引用它 加进来后表示这个module依赖这个Library但是这个Module里有一个artifact部署包它是已经生成了。 方法一将artifact删掉重新建一个 方法二点击Problems将lib加入进入 在当前项目的web\WEB-INF下新建lib文件夹导入servlet-api 缺点只能是当前module独享。如果有第二个module我们需要再次重复的新建lib。 优点启动的时候会自动将lib加进去 将Tomcat依赖加入进来 找到库Library 将tomcat依赖导入进来 查看外部库可以看见tomcat库已被引入
此时HttpServlet已经可以正常导入了
编写AddServlet类
package com.atguigu.servlets;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class AddServlet extends HttpServlet {/*** 这个方法可以帮你去响应post请求发一个post请求过来doPost方法就会被调用* 当客户端给服务端发请求的时候服务器端就把这个请求封装成一个对象request*/Overridepublic void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {// 请求里去获取参数获取名字为fname的值String fname request.getParameter(fname);// 通过Http请求发过来的只能是字符串String priceStr request.getParameter(price);// 如果需要用到数字强转即可。int price Integer.parseInt(priceStr);String fcountStr request.getParameter(fcount);String fcount request.getParameter(fcountStr);String remark request.getParameter(remark);System.out.println(fname fname);System.out.println(price price);System.out.println(fcount fcount);System.out.println(remark remark);}
}将servlet的名字和某个类对应上请求add这个组件可以对应上我们刚刚写的AddServlet 配置web\WEB-INF\web.xml 一个servlet允许对应多个servlet-mapping无论发给哪个都是对应一个servlet。这样可以在servlet当中获取我们到底是通过哪个URL请求过来的。根据不同URL发送的请求可以执行不同的业务逻辑。 servletservlet-nameDemo02Servlet/servlet-nameservlet-classcom.atguigu.servlets.Demo02Servlet/servlet-class
/servlet
servlet-mappingservlet-nameDemo02Servlet/servlet-nameurl-pattern/demo02/url-pattern
/servlet-mapping
servlet-mappingservlet-nameDemo02Servlet/servlet-nameurl-pattern/demo021/url-pattern
/servlet-mapping
servlet-mappingservlet-nameDemo02Servlet/servlet-nameurl-pattern/demo022/url-pattern
/servlet-mapping但是一个servlet-mapping不能对应多个servlet。 ?xml version1.0 encodingUTF-8?
web-app xmlnshttp://xmlns.jcp.org/xml/ns/javaeexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsdversion4.0servlet!-- servlet名字可以随便写 --servlet-nameAddServlet/servlet-name!-- 这里需要写上类的全类名 --servlet-classcom.atguigu.servlets.AddServlet/servlet-class/servlet!-- 映射 --servlet-mappingservlet-nameAddServlet/servlet-name!-- 这里/千万不能丢 --url-pattern/add/url-pattern/servlet-mapping
/web-app执行流程
用户发请求actionadd服务器tomcat项目中web.xml中找到servlet-mapping中的url-pattern /add找servlet-name AddServlet找和servlet-mapping中servlet-name一致的servlet找到servlet中的servlet-class就能通过 servlet 找到com.atguigu.servlets.AddServlet类tomcat会将字节码文件加载进内存并且创建其对象用户发送的是post请求methodpost因此 tomcat 会执行AddServlet中的doPost方法