Serlvet学习笔记之一 ——实现servlet的3种方法
1.配置环境,从tomcat的lib下面引入servlet-api.jar包。
2.创建servlet
方法一,通过继承servlet接口
package com.test; import javax.servlet.*; import java.io.*; public class Login implements Servlet{ //销毁servlet实例,释放内存,在以下情况被调用:关闭应用,重启,关机才被调用 public void destroy() { System.out.println("destroy"); //检验 } //得到servlet的配置文件 public ServletConfig getServletConfig() { return null; } public String getServletInfo() { return null; } // 用于初始化servlet(类似于类的构造函数),只会被调用一次(用户第一次访问该servlet时被调用) public void init(ServletConfig arg0) throws ServletException { System.out.println("init"); //检验 } //用于处理业务逻辑,每次访问该servlet都会被调用 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { System.out.println("service"); //检验 PrintWriter pw=res.getWriter(); pw.println("hello world!!!"); } }
3.部署
配置xml文件
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 需要添加的代码 --> <servlet> <!-- 给你的servlet取名,任意的--> <servlet-name>hello</servlet-name> <!-- 指明servlet的路径,包名.类名 --> <servlet-class>com.test.login</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <!-- 访问servlet的URL,任意的--> <url-pattern>/login</url-pattern> </servlet-mapping> </web-app>
在浏览器中输入http://IP:port/项目名/login,即可访问,(一般情况下是项目名,当然也可以在tomcat的webapps下改掉项目的名字)
方法二,通过继承GenericServlet实现
package com.test; import javax.servlet.*; import javax.servlet.GenericServlet; import java.io.*; public class Login extends GenericServlet{ //重写service方法即可 public void service (ServletRequest re,ServletResponse res){ try { PrintWriter pw=res.getWriter(); pw.println("Hello Generic"); } catch (Exception e) { e.printStackTrace(); } } }
方法三,通过继承HttpServlet
表单提交数据get和post的区别:
1.从安全性看:get<post;get提交的数据会在地址栏上显示
2.从提交内容看:get<post;get提交的数据不能大于2K,而post不受限制,不过建议不要大于64K
3.从相应速度来看:get>post,get要求服务器立即处理请求,而post可能形成队列请求。
综合来说,建议使用post
package com.test; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Login extends HttpServlet{ //处理get请求 public void doGet(HttpServletRequest re,HttpServletResponse rs){ try { PrintWriter pw=rs.getWriter(); pw.println("hello,HttpServlet"); } catch (Exception e) { e.printStackTrace(); } } //处理post请求 public void doPost(HttpServletRequest re,HttpServletResponse rs){ this.doGet(re, rs); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了