servlet拼接html字符串,servlet

本文详细介绍了Servlet的开发过程,包括创建Web应用项目、编写Servlet代码、配置web.xml、部署到Tomcat以及处理HTTP请求的方法。讨论了GET和POST方式的区别,以及如何处理中文参数。同时,讲解了Servlet的生命周期,包括实例化、初始化、提供服务和销毁阶段。最后,提到了Servlet的自启动和请求响应方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发Servlet

Servlet本身不能独立运行,需要在一个web应用中运行,一个web应用是部署在tomcat中的

所以开发一个servlet需要如下几个步骤

1.创建web应用项目

创建一个java project,导入servlet-api.jar

2.编写servlet代码

public class HelloServlet extends HttpServlet{

doGet();//在浏览器输入地址提交数据的方式是GET

}

3.部署到tomcat中

1. 配置web.xml(web/WEB-INF/web.xml)

HelloServlet//两处的name必须一样

HelloServlet//name与class可以不一样,一般写成一样

HelloServlet//两处的name必须一样

/hello

2.指定输出目录到classes目录(WEB-INF/classes)

3.配置tomcat的server.xml 中的

获取参数

1.创建login.html

登录页面

//会提价到login路径(映射到LoginServlet)

账号:

密码:

2.创建LoginServlet,提供doPost(),在方法中通过request.getParamter根据name取出对应的账号密码

3.映射LoginServlet到路径login

返回响应

LoginServlet判断账号密码是否正确,

正确打印success否则打印fail。

创建相应的html字符串通过

response.getWriter.println()发送到浏览器

调用流程

c5ca030b93b4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

调用流程.png

1.首先访问login.html打开一个静态html页面在这个页面中可以通过form以post形式提交数据

http://127.0.0.1/login.html

2.form把账号和密码提交到/login路径并附带method="post"

3.tomcat接收到一个新请求http://127.0.0.1/login

通过web.xml映射到LoginServlet

4.Tomcat定位到LoginServlet后发现没有LoginServlet实例存在于是就调用LoginServlet的public无参的构造方法实例化一个对象

5.Tomcat拿到LoginServlet实例后根据login.html提交的method="post"去调用doPost方法

6.在doPost方法中通过调用参数request.getParameter()把页面上传递过来的账号和密码信息取出来

7.根据账号密码是否正确创建不同的html字符串并设置在response对象上

PrintWriter pw = response.getWriter();

pw.println(html);

8.tomcat把html传递给浏览器(HTTP协议)

service()/doGet()/doPost()

doGet()

当浏览器使用get方式提交数据的时候,servlet需要提供doGet()方法

get方式:

form默认提交方式

通过超链访问某个地址

在地址栏输入某个地址

ajax指定使用get方式的时候

doPost()

当浏览器使用post方式提交数据的时候,servlet需要提供doPost()方法

post方式:

form显示设置method="post"时

ajax指定使用get方式的时候

service()

实际上在执行doGet/doPost之前都会先执行service(HttpServletRequest , HttpServletResponse ),由service判断调用get还是post

service(), doGet(), doPost() 三种方式的参数列表都是一样的。

所以,有时候也会直接重写service()方法,在其中提供相应的服务,就不用区分到底是get还是post了。

中文问题

获取中文的参数

方法一:

1.login.html加上

//告诉浏览器给服务器发送消息时使用UTF-8编码

2.login.html的form的method修改为post

3.在servlet进行解码和编码

byte[] bytes= name.getBytes("ISO-8859-1");

name = new String(bytes,"UTF-8");

方法二:在request.getParameter之前加上request.setCharacterEncoding("UTF-8");

返回中文响应

在Servlet中加上response.setContentType("text/html",charset="UTF-8");

生命周期

一个Servlet的生命周期:

实例化->初始化->提供服务->销毁->被回收

实例化/初始化

1.当用户通过浏览器输入一个路径

这个路径对应的servlet被调用的时候该Servlet就会被实例化(构造方法被调用)

无论访问了多少次LoginServlet构造方法只执行一次,所以Servlet是单实例的

2.init(ServletConfig)是一个实例方法在构造方法执行之后执行,无论访问多少次初始化只执行一次

提供服务

service/doGet/doPost方法中执行业务代码

销毁destoy()

1.关闭tomcat时destroy()方法会被调用

2.该Servlet所在的web应用重新启动时

docBase="e:\\project\\j2ee\\web"

debug="0" reloadable="false" />

如果把 reloadable="false" 改为reloadable="true"

就表示有任何类发生的更新,web应用会自动重启

当web应用自动重启的时候,destroy()方法就会被调用

跳转

服务端跳转

request.getRequestDispatcher("success.html").forward(request, response);

//浏览器路径依然是/login,并不会变成success.html

c5ca030b93b4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

success.png

客户端跳转

response.sendRedirect("fail.html");//浏览器地址发生变化

c5ca030b93b4?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

fail.png

自启动

有的时候会有这样的业务需求:

tomcat一启动,就需要执行一些初始化的代码,

比如校验数据库的完整性等。

但是Servlet的生命周期是在用户访问浏览器对应的路径开始的。

如果没有用户的第一次访问,就无法执行相关代码。

这个时候,就需要Servlet实现自启动

即,伴随着tomcat的启动,自动启动初始化,

在初始化方法init()中,就可以进行一些业务代码的工作了。

在web.xml中,配置Hello Servlet的地方

增加一句10

(取值范围1-99代表启动顺序小的数字先启动)

request常见方法

response的用法

上传文件

CRUD

JSON

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值