Servlet学习

一、以添加数据为例

在add.html页面的表单中,我们输入数据,通过点击添加操作,根据action发给我们服务器端的add组件,这个add组件会用JDBC中添加的方法向数据库中添加数据。

1、add组件

AddServlet

servlet(服务器端的一个应用组件),add指实现添加的功能。

需要完成的事情:

该类需要继承HttpServlet才可以实现以上的工作(在Tomcat的lib文件中的servlet-api.jar)

添加依赖:

点击+,导入我们的servlet-api.jar即可使用

dopost() 会响应我们method=post 的请求

doget()同理

2、HttpServletRequest

当用户在add.html页面中填入数据之后点击添加操作,相当于向我们的服务器端发送了一个请求,

于是将表单里的数据都会存储在这个请求之中,我们可以通过 HttpServletRequest定义的变量来获取。

3、如何将表单上的action和addServlet对应上?

在web.xml文件中配置如下:

<servlet><servlet-name>AddServlet</servlet-name><servlet-class>servlets.AddServlet</servlet-class></servlet><servlet-mapping><servlet-name>AddServlet</servlet-name><url-pattern>/add</url-pattern></servlet-mapping>

1、用户发请求action=add

2、项目web.xml 文件中找到url-pattern =/add

3、接着找上面的servlet-name

4、找和servlet-mapping中和servlet-name一致的servlet(既第二行的servlet-name :AddServlet)

5、接着就能找到serlvet-class

6、最后根据用户发送的请求的method来找到AddServlet中的与method对应的方法

接下来之后服务器端跟数据库连接即可(FruitDAO是提前写好的)

public class AddServlet extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("utf-8");String fname = req.getParameter("fname");String priceStr = req.getParameter("price");Integer price = Integer.parseInt(priceStr);String fcountStr = req.getParameter("fcount");Integer fcount = Integer.parseInt(fcountStr);String remark = req.getParameter("remmark");FruitDAO fruitDAO = new FruitDAOImpl();boolean flag = fruitDAO.addFruit(new Fruit(0,fname, price, fcount, remark));System.out.println(flag? "添加成功":"添加失败");}
}

在web.xml文件中,若配置多个servlet-name建立连接 会web-app下会出现错误。只需要根据关于servlet中web.xml web-app报错 解决方案_石中玉大帅哥的博客-CSDN博客j

即可解决

2、Servlet的继承关系

javax.servlet.Servlet接口

        javax.servlet.GenericServlet 抽象类

                javax.servlet.http.HttpServlet

2.1 相关方法

 后面的子类都会实现这些方法

init() 初始化方法

service 服务方法:当有请求过来,该方法会被执行(Tomcat容器来调用)

        在genericServlet中也是抽象的方法

        在HttpServlet中会分析请求方式,在决定调用哪个do方法,do方法默认都是405的实现风格(需要我们实现这些请求方法,否则默认报405)

destroy 销毁方法

2.2 service方法

        各种if判断,根据表单中的请求方法来决定调用哪一个do方法(默认为get)

3、Servlet的生命周期

3.1

        也是由Tomcat容器来控制

        默认情况下:

                第一次接受请求时会进行实例化(调用构造方法)[这里调用底层的方法],初始化(init方法)、然后服务调用service,当容器关闭时所有的servlet会被销毁,调用destroy方法。

                *实例化和初始化Tomcat只会创建一次,所有的请求都是使用这个实例来响应。

                

如何实例化对应的serlvet

 当在servlet中自己重写构造方法时候,访问demo02的时候就会出现这样的错误

 意思是说无法初始化这个servlet实例去调用那些init、service方法.......

(因为原本的构造函数里通过java的方法会创建这个实例)。

3.2 Servlet的初始化时机

        -默认是第一次接受请求时候,实例化初始化

        -也可以通过<load-on-startup>来设置启动的先后顺序,数字越小启动越靠前

Servlet在容器中是单例的、线程不安全的

        单例:无论哪个servlet发送请求过来,tomcat容器都只会实例化一个对象,都是使用该对象来调用各个组件的

4、保存作用域

        page :页面级别

        request :一次请求响应的范围

        session :一次会话

        application :一次应用程序

 

补充

servlet3.0之后支持注解

因此在web.xml中不需要一个一个去注册组件

只需要增加对应的注解即可

路径问题

../ 回到上级

 在login.html中 如何连接css样式中的login.css

答: ../css/login.css  相对路径的写法

当主体是shopping.html,如何连接css样式中的login.css

答:../../css/login.css  相对路径的写法

JavaWeb网页的错误代码:

404:找不到对应资源

405:一般是表单提交的方法在组件里面不存在这个方法的重写,比如表单的提交方式为get, 在servlet组件中就需要有一个doget()方法,如果没有就调用原本的doget方法,就会报405

500:服务器端的错误

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418052.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

b 树查找时间复杂度_心里没点 B 树。。。

B 树和红黑树的动画小吴还在制作当中&#xff0c;比想象中的复杂好多好多好多&#xff0c;今天先来一个图解版的 B 树。。。1 引言数据库的增删改查等操作是开发过程中最为常见也是尤为重要的&#xff0c;尤其是现在大数据的兴起&#xff0c;导致数据存储量急剧增加&#xff0c…

HTTP与会话的学习

一、HTTP协议 请求 1请求行 2、请求消息头 3、请求主体 响应 1、响应行 2、响应头 3、响应体 二、会话 HTTP无状态&#xff1a;服务器无法判断两次请求是否为同一个客户端发过来的。 因此通过会话跟踪来解决这个问题 Overrideprotected void service(HttpServletRequest req,…

3650m5服务器内存选择 ibm_各大品牌服务器租用价格表明细(附详细表单)

企业在进行IT建设的花费肯定不少&#xff0c;其中就包括了服务器租用。那如何租到性价比高的服务器&#xff1f;可以先了解一下各大品牌的报价情况&#xff0c;对比服务器租用价格表&#xff0c;找到价格合适的。不过也不可一味的遵从低价格&#xff0c;毕竟一分钱一分货也是一…

服务器内部转发以及客户端重定向概念的学习

一、服务器内部转发 一次请求响应的过程&#xff0c;对于客户端而言&#xff0c;内部经过了多少次转发是不知道的。 既地址栏不会变化 二、客户端重定向 客户端向上面的组件发送请求&#xff0c;组件里由response.sendRedirect方法指向demo07&#xff0c;于是服务器端里上面的…

cad幕墙下料lisp_石材幕墙屋面不锈钢角钢接闪带施工方法

石材幕墙屋面不锈钢角钢接闪带施工方法 摘要&#xff1a;石材幕墙屋面接闪带传统安装方法采用镀锌圆钢、不锈钢管明敷或加接闪小针等防雷方式&#xff0c;安装后易产生变形、幕墙漏水等问题&#xff0c;锈蚀会污染石材表面&#xff0c;影响建筑立面效果&#xff0c;清洗幕墙困…

JavaWeb中水果库存系统的学习

一、编辑和修改特定的信息 我们想达到的效果为&#xff1a;在页面点击一个水果&#xff0c;然后对这个水果进行编辑&#xff0c;之后更新页面。 第一步&#xff1a; 在水果名称这里增加一个超链接&#xff0c;点击可以跳转到编辑的页面中&#xff0c; th:href"{...}&qu…

删不干净_“我劝你别删前任微信”

大家好&#xff0c;我是Lady Bird.几天前&#xff0c;我收到了前任测试单删的群发信息。看到他头像边亮起的红色数字一的瞬间&#xff0c;我才意识到分手之后我们再也没联系过。可能在很多人看来&#xff0c;留着对方微信就是危险信号。说实话&#xff0c;这事儿要放几年前&…

对于事务的认识

例子&#xff1a;当转账操作的时候&#xff0c;A用户转账给B用户&#xff0c;希望的结果是&#xff1a;A扣了钱&#xff0c;B加了钱&#xff1b;或者是A转账失败&#xff0c;B的钱数也没增加。 事务的处理原则&#xff1a;要么都执行&#xff0c;要么都不执行 理解&#xff1a;…

Spring中IOC与DI的学习

1、IOC 1.1步骤 2、DI 依赖注入 2.1步骤&#xff1a; 其中的set方法是IOC容器来调用的 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/…

Mybatis初始化配置

框架&#xff1a;jar包配置文件 一、添加依赖 在项目的pom.xml文件中添加mybatis依赖 <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.1</version><scope>test</s…

用table展示树形结构数据_复习一下数据结构(二)——2.2 树形索引(23树)

普通树一个结点可以有多个孩子&#xff0c;但它本身只能存储一个元素&#xff0c;而二叉树结点最多只能有两个&#xff0c;这对于元素非常多的时候&#xff0c;会使得树的度或者是高度会非常大。这就使得内存存取外存的次数会增多&#xff0c;一旦涉及到外部存储设备&#xff0…

Spring中整合mybatis包

一、把对应的依赖都添加上&#xff1a; mysql、mybatis、spring的依赖&#xff08;都是基础的&#xff09; <dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.17<…

dfa转正则表达式_从0到1打造正则表达式执行引擎(二)

本文原文地址https://blog.csdn.net/xindoo/article/details/106458165在上篇博客从0到1打造正则表达式执行引擎(一)中我们已经构建了一个可用的正则表达式引擎&#xff0c;相关源码见https://github.com/xindoo/regex&#xff0c;但上文中只是用到了NFA&#xff0c;NFA的引擎建…

AOP的学习

注意&#xff1a;不惊动原始设计 一、部署依赖 AOP开发默认导入 <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.4</version></dependency> 二、具体步骤 Aspect 告诉Sprin…

选择题_一级造价师选择题的分值是多少

一级造价工程师考试的选择题分为单选题和多选题&#xff0c;每科单选题为60题&#xff0c;每题一分&#xff1b;多选题为20题&#xff0c;每题两分&#xff0c;总分100分。一级造价师选择题的分值一级造价工程师考试共有《建设工程造价管理》、《建设工程计价》、《建设工程技术…