/404.html
Servlet3.0支持,使用WebServlet注解配置
在类前面加:
@WebServlet(“/Servlet的URL”)
对比两种注册方法:
-
使用注解比较简单,缺点是使用硬编码方式进行注册,后面如果需要修改就需要修改源代码。
-
使用XML比较繁琐,优点是XML可以在网站部署后进行修改。
[](()Servlet的生命周期
==========================================================================
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”);
}
}
[](()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>密码
身份证号 手机号[](()中文乱码问题
====================================================================
页面或表单中包含中文,可能出现乱码。
对于不同的乱码情况,有不同的解决方法:
- html页面中