Servlet3.0支持,使用WebServlet注解配置
在类前面加:
@WebServlet(“/Servlet的URL”)
对比两种注册方法:
-
使用注解比较简单,缺点是使用硬编码方式进行注册,后面如果需要修改就需要修改源代码。
-
使用XML比较繁琐,优点是XML可以在网站部署后进行修改。
==========================================================================
Servlet的生命周期是由服务器来进行管理的,主要的生命周期有:
- 实例化
用户第一次访问该Servlet类时,就会创建一个Servlet的实例,该实例保存在Tomcat中。(注意一个Servlet类只有一个实例)
默认情况下,Servlet第一次被访问时被创建
在标签下配置执行Servlet的创建时机
- 第一次被访问时创建
负数
- 在服务器启动时创建
0或正整数
- 初始化
init方法,用户第一次访问时,先实例化,然后初始化
- 服务
调用service方法,给用户提供服务,用户每访问一次,就调用一次
- 销毁
调用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”);
}
}
=============================================================================
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();
}
}
客户端表单:
====================================================================
页面或表单中包含中文,可能出现乱码。
对于不同的乱码情况,有不同的解决方法:
- html页面中
- doGet方法的请求参数
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
更多笔记分享
- doGet方法的请求参数
面试结束复盘查漏补缺
每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。
以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~
重要的事说三遍,关注+关注+关注!
[外链图片转存中…(img-u0PlsoQF-1714326589525)]
[外链图片转存中…(img-AvAn3y1b-1714326589526)]
更多笔记分享
[外链图片转存中…(img-zaXQBxhS-1714326589526)]