JavaWeb Servlet的原理和使用

/404.html

Servlet3.0支持,使用WebServlet注解配置

在类前面加:

@WebServlet(“/Servlet的URL”)

对比两种注册方法:

  • 使用注解比较简单,缺点是使用硬编码方式进行注册,后面如果需要修改就需要修改源代码。

  • 使用XML比较繁琐,优点是XML可以在网站部署后进行修改。

[](()Servlet的生命周期

==========================================================================

Servlet的生命周期是由服务器来进行管理的,主要的生命周期有:

  1. 实例化

用户第一次访问该Servlet类时,就会创建一个Servlet的实例,该实例保存在Tomcat中。(注意一个Servlet类只有一个实例)

默认情况下,Servlet第一次被访问时被创建

在标签下配置执行Servlet的创建时机

  • 第一次被访问时创建

负数

  • 在服务器启动时创建

0或正整数

  1. 初始化

init方法,用户第一次访问时,先实例化,然后初始化

  1. 服务

调用service方法,给用户提供服务,用户每访问一次,就调用一次

  1. 销毁

调用destroy方法,释放各种资源,在Tomcat关闭时调用

案例代码:

/**

  • 测试Servlet的生命周期

*/

@WebServlet(“/lifecircle.do”)

public class LifecircleServlet extends HttpServlet{

public LifecircleServlet(){

System.out.println(“实例化LifecircleServlet”);

}

@Override

public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {

super.service(req, res);

System.out.println(“LifecircleServlet进行服务”);

}

@Override

public void destroy() {

super.destroy();

System.out.println(“LifecircleServlet进行销毁”);

}

@Override

public void init() throws ServletException {

super.init();

System.out.println(“LifecircleServlet进行初始化”);

}

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println(“LifecircleServlet调用doGet”);

}

}

[](()Servlet的请求和响应参数

=============================================================================

service方法用于处理用户请求,参数:

  • HttpServletRequest 请求参数,包含请求URL、方法、参数等信息

主要方法:

  • String getParameter(“参数名”) 获得请求中的参数

  • setCharacterEncoding(“编码类型”) 设置请求的编码

  • getMethod() 获得请求方法类型,Get、POST…

  • getRequestURL() 获得请求的URL

  • HttpServletResponse 响应参数,给浏览器提供响应的交互

主要方法:

  • PrintWriter getWriter() 获得输出流,向浏览器发送信息

  • sendRedirect(“页面地址”) 实现页面的跳转

  • setCharacterEncoding(“编码类型”) 设置响应的编码

案例:Servlet接受浏览器发送的请求参数

@WebServlet(“/register.do”)

public class RegisterServlet extends HttpServlet{

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

System.out.println(“doGet”);

doPost(req,resp);

}

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//设置请求的编码

req.setCharacterEncoding(“UTF-8”);

//设置响应的编码

resp.setContentType(“text/html;charset=UTF-8”);

//获得请求参数

String username = req.getParameter(“username”);

//解决get提交参数的中文乱码

//username = new String(username.getBytes(“ISO-8859-1”),“UTF-8”);

String password = req.getParameter(“password”);

String pid = req.getParameter(“pid”);

String phone = req.getParameter(“phone”);

//输出参数

System.out.println(username+“,”+password+“,”+pid+“,”+phone);

//获得响应对象的输出流

PrintWriter pw = resp.getWriter();

pw.println(username+“你好啊”);

pw.close();

}

}

客户端表单:

用户的注册
账号

<t 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 d>密码

身份证号 手机号

在这里插入图片描述

[](()中文乱码问题

====================================================================

页面或表单中包含中文,可能出现乱码。

对于不同的乱码情况,有不同的解决方法:

  1. html页面中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值