知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

Java程序员秋招三面蚂蚁金服,浅谈Servlet

发表时间:2022-03-25来源:网络

2.B/S模式执行流程:

通过浏览器把数据发送给服务器,服务器生成对应的Html代码并返回给浏览器,浏览器对其解释后显示给用户。

3.请求和响应:

从浏览器发送给服务器的数据包称为“请求(Request)”。

从服务器返回给浏览器的结果称为“响应(Response)”。

4.J2EE:

J2EE(Java 2 Platform Enterprise Edition)指 “Java 2 企业版”。

开发BS(Web)应用程序就是J2EE最核心的功能。

J2EE由13个应用模块组成。

5.Apache Tomcat:

Tomcat是Apache软件基金会旗下一款免费的开源的Web应用服务器程序。

6.J2EE与Tomcat的关系:

J2EE是一组技术规范和指南,具体实现由软件厂商决定。

Tomcat是J2EE Web(Servlet和JSP 2个模块)标准的实现者。

J2SE是J2EE运行的基石,允许Tomcat离不开J2SE(JRE和JDK)。

7.Servlet:

Servlet(Server Applet)是服务器小程序,只要用于生成动态Web内容。

Servlet是J2EE最重要的组成部分。

二、Servlet:

例:第一个Servlet

FirstServlet.java:

package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FirstServlet extends HttpServlet { // 重写父类的该方法(参数1:请求,参数2:响应) @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 接收请求发来的参数 String name = request.getParameter("name"); String html = "

hi," + name + "!
"; System.out.println("返回给浏览器的响应数据是:" + html); PrintWriter out = response.getWriter(); out.println(html); // 将html发送回浏览器 } }

web.xml:

FirstServlet first com.servlet.FirstServlet first /hi

图解执行流程:

1.标准Java Web工程结构:

标准Java Web工程结构 组织结构描述tomcat安装目录/webapps/Tomcat 应用根目录,存放所有Web应用/web应用目录/Java Web 应用目录/web应用目录/index.html(或.jsp)默认首页/WEB-INFWEB应用的安全目录,用于存放配置文件/WEB-INF/web.xmlweb.xml是"部署描述符文件",是该Web项目核心配置文件/WEB-INF/classes存放编译后的class文件/WEB-INF/lib存放web应用依赖的jar文件/META-INF/MANIFEST.MF包含Web应用的版本信息

2.Servlet开发步骤:

①创建Servlet类,继承HttpServlet类(Servlet与标准Java类的区别)。

②重写service方法,编写程序代码。

③配置web.xml,绑定URL。

3.Servlet访问方法:

http://IP端口地址/context-path/url-mapping

远程访问IP地址,本地访问localhost(默认端口是8080)。

context-path成为”上下文路径“,默认为工程名。

url-mapping是映射地址。

例:

package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SimpleServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter(); //getWriter()是向浏览器输出到数据流 out.println("baidu"); //向浏览器输出希望显示的内容 } }

web.xml:

FirstServlet simple com.servlet.SimpleServlet simple /simple

4.请求参数:

请求参数是指浏览器通过请求向Tomcat提交的数据。

请求参数通常是用户输入的数据,使Servlet进行处理。

格式:参数1=值a&参数2=值b&参数3=值c…

请求参数通过URL向服务器发送。

表单如和与servlet连接? 通过标签的action属性。

5.Servlet接收请求参数:

接收单个参数:request.getParameter()

接收多个同名参数(如复选框):request.getParameterValues()

例:

Student.html:

Insert title here

学员信息登记表

姓名:
电话:
性别: 男 女
特长: 英语 编程 演讲 游泳

package com.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class SimpleServlet extends HttpServlet {

@Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); String mobile = request.getParameter("mobile"); String sex = request.getParameter("sex"); String[] spec = request.getParameterValues("spec"); PrintWriter out = response.getWriter(); // getWriter()是向浏览器输出到数据流 out.println("

name:" + name + "

"); out.println("

moblie:" + mobile + "

"); out.println("

sex:" + sex + "

"); for (String n : spec) { out.println("

spec:" + n + "

"); } }

}

![](https://img-blog.csdnimg.cn/20210725195925181.gif) ### 6.Get和Post方法: ①Get方法是将数据通过在URL附加数据显性向服务器发送数据。 * http://localhost:8080/FirstServlet/sample?name=Isebal * 表单默认采用get方法 ②Post方法是将数据存放在 "请求体" 中隐性向服务器发送数据,并不在URL中体现,我们也看不见。 * http://localhost:8080/FirstServlet/sample * 请求体:name=Isebal * 更安全。 ③修改表单提交方式:在标签中添加 method="" ![](https://img-blog.csdnimg.cn/20210725201644116.png) ![](https://img-blog.csdnimg.cn/20210725201908569.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXz,size_16,color_FFFFFF,t_70)  地址栏不显示数据了。 注意service()是请求处理的核心方法,无论是get或post都会被service()方法处理。  ④可通过getMethod()方法获取当前的提交方法。

package com.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class SimpleServlet extends HttpServlet {

@Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String method=request.getMethod(); PrintWriter out = response.getWriter(); // getWriter()是向浏览器输出到数据流 out.println("

method:" + method + "

"); }

}

![](https://img-blog.csdnimg.cn/2021072520282424.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXz,size_16,color_FFFFFF,t_70) ⑤Servlet针对Get和Post方法提供了对应的方法处理:doGet()和doPost()。 方法参数格式如下:

package com.servlet;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class Re extends HttpServlet {

@Override // 处理get请求 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); response.getWriter().println("

" + name + "

"); } @Override // 处理post请求 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); response.getWriter().println("

" + name + "

"); }

}

FirstServlet request_method com.servlet.Re request_method /request_method Insert title here

学员信息登记表

姓名:

 ![](https://img-blog.csdnimg.cn/20210725210630901.gif) ⑥ 总结: * service()方法:对所有请求进行无差别处理(实际是区分不同请求转给doGet()方法或doPost()方法)。 * doGet()方法:处理Get请求。 * doPost()方法:处理Post请求。 * Get方式常用于不包含敏感信息的查询功能。 * Post方式用于安全性要求较高的功能或服务器的 " 写 " 操作(如用户登录、用户注册、更新公司账目等)。 ### 7.Servlet生命周期: ①装载:Tomcat解析web.xml,确定servlet存在。 ②创建:第一次访问servlet时,创建servlet对象,执行其构造函数。 ③初始化:init() ④提供服务:service()、doGet()、doPost() ⑤销毁:当服务重启或关闭时执行destory()。 例: * ``` package com.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FirstServlet extends HttpServlet { public FirstServlet() { System.out.println("正在创建FirstServlet对象!"); } @Override public void init(ServletConfig config) throws ServletException { System.out.println("正在初始化FirstServlet对象!"); } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 接收请求发来的参数 String name = request.getParameter("name"); String html = "

hi," + name + "!
"; System.out.println("返回给浏览器的响应数据是:" + html); PrintWriter out = response.getWriter(); out.println(html); // 将html发送回浏览器 } @Override public void destroy() { System.out.println("正在销毁FirstServlet对象!"); } } ``` ![](https://img-blog.csdnimg.cn/2021072521333345.gif) 启动服务器后,会发现控制器没有任何输出,因为只有在首次访问时才会初始化。在页面访问后,控制台完成了②③④步。修改代码保存,应用重启,执行destory()方法。再次访问页面,又重新初始化servlet对象......注意Tomcat全局中只有一个servlet对象。 ### 8.使用注解简化配置: * Servlet 3.x之后引入了 " 注解Annotation " 特性。 * 注解用于简化Web应用程序的配置过程。 * Servlet核心注解:@WebServlet  例:

package com.servlet;

import java.io.IOException;

结局:总结+分享

看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。

开篇有提及我可是足足背下了Java互联网工程师面试1000题,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱,所以福利也为你准备,这份1000题免费送你!点击这里免费领取

Java互联网工程师面试1000题

而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。

程序员代码面试指南–IT名企算法与数据结构题目最优解

其余像设计模式,建议可以看看下面这4份PDF(已经整理)

更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。

Servlet 3.x之后引入了 " 注解Annotation " 特性。

注解用于简化Web应用程序的配置过程。

Servlet核心注解:@WebServlet

例:

package com.servlet; import java.io.IOException; ## 结局:总结+分享 看完美团、字节、腾讯这三家的一二三面试问题,是不是感觉问的特别多,可能咱们真的又得开启面试造火箭、工作拧螺丝的模式去准备下一次的面试了。 开篇有提及我可是足足背下了**Java互联网工程师面试1000题**,多少还是有点用的呢,换汤不换药,不管面试官怎么问你,抓住本质即可!能读到此处的都是真爱,所以福利也为你准备,这份1000题免费送你!**[点击这里免费领取](https://gitee.com/vip204888/java-p7)** * **Java互联网工程师面试1000题** [外链图片转存中...(img-uZzVLwJe-1628136458314)] 而且从上面三家来看,算法与数据结构是必备不可少的呀,因此我建议大家可以去刷刷这本左程云大佬著作的 《程序员代码面试指南 IT名企算法与数据结构题目最优解》,里面近200道真实出现过的经典代码面试题。 * **程序员代码面试指南--IT名企算法与数据结构题目最优解** [外链图片转存中...(img-3Zn1somf-1628136458316)] * 其余像设计模式,建议可以看看下面这4份PDF(已经整理) [外链图片转存中...(img-DdWNnwPo-1628136458318)] * 更多的Java面试学习笔记如下,关于面试这一块,我额外细分出Java基础-中级-高级开发的面试+解析,以及调优笔记等等等。。。 [外链图片转存中...(img-gz28quYs-1628136458320)] 以上所提及的全部Java面试学习的PDF及笔记,如若皆是你所需要的,那么都可发送给你!
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜