一、servet入门
1、什么是servlet
servlet['sɝvlɛt]:是Java语言编写的运行在tomcat上的程序,用来处理http请求
servlet提供了一个接口(servlet),该接口规定了tomcat和servlet之间的契约,所以所有的servlet实例都必须实现该接口
二、servlet的生命周期
构造方法:第一次请求,tomcat通过反射创建servlet对象时调用,只调用一次
init():servlet对象创建后调用,只调用一次
service():每次请求都调用
destroy():关闭tomcat时调用
三、创建servlet的三种方式
1、实现servlet接口
缺点:必须实现所有接口
2、继承GenericServlet抽象类
优点:不需要实现所有方法
3、继承HttpServlet抽象类
优点:
①强化ServletRequest和ServletResponse
②把请求分门别类
四、接收前台提交的参数
参数的格式:
参数key(name属性)=参数value(value属性),eg:age=18
接收参数:
request.getParameter("input框的name属性");
五、中文乱码的解决方案
设置请求的编码格式:
request.setCharacterEncoding("UTF-8");
设置响应的编码格式:
response.setContentType("text/html;charset=UTF-8");
六、重定向和转发
1、转发
本质:
servlet内部行为(servlet1---->servlet2):
①ForwardServlet
②req.getRequestDispatcher("main.jsp").forward(req, resp);
特点:
浏览器url不变
还是原来的request对象,数据不丢失
2、重定向
本质:
浏览器发送两次请求:
①<a href="forward">请求转发</a>
②resp.sendRedirect("main.jsp");
特点:
浏览器url变
创建新的request,数据丢失
七、sevlet自动加载
<servlet>
<servlet-name>loadOnStartup</servlet-name>
<servlet-class>com.by.servlet.LoadOnStartupServlet</servlet-class>
<!--tomcat启动时就调用构造方法和init方法创建servlet的对象,数字越小优先级越好-->
<load-on-startup>1</load-on-startup>
</servlet>
八、ServletContext对象
1、是什么?
tomcat创建的全局的域对象和配置对象
2、域对象怎么用
①获取域对象
ServletContext servletContext = getServletContext();
②添加数据
servletContext.setAttribute("msg", "hello, sister!!!");
③获取数据
Object msg = servletContext.getAttribute("msg");
④删除数据
servletContext.removeAttribure("msg");
3、配置对象怎么用
①配置参数
<context-param>
<param-name>username</param-name>
<param-value>admin</param-value>
</context-param>
②获取ServletContext对象
ServletContext servletContext = getServletContext();
③获取参数
String username = servletContext.getInitParameter("username");
九、request对象
1、是什么?
tomcat创建的请求对象和域对象:
①request对象包含了前端提交参数和请求头
②request对象还是一个域对象
2、域对象怎么用?
req.setAttribute("msg", "wokao");
Object msg = req.getAttribute("msg");
3、怎么获取参数
String username = req.getParameter("username");
十、response
1、是什么?
tomcat创建的响应对象:
①往浏览器的响应头传递数据
②往浏览器的响应体传递数据
2、怎么用
响应头:
resp.setHeader("Content-Type", "text/html;charset=utf-8;msg=sb");
响应体:
response.getWriter().write("<h1>hello<h1>");
十一、三层架构
1、三层架构是什么?
web:表现层
com.by.servlet/web:servlet
service:业务层
com.by.service:service接口
com.by.service.impl:service实现类,业务
dao:数据访问层
com.by.dao:dao接口
com.by.dao.impl:dao实现类,sql
2、调用关系
web---->service--->dao