一、 Servlet的概念
a) Servlet是一个Java类
b) 特点:
l 运行在服务器软件(Tomcat等这种软件)之内
l 用于服务器端接受、处理、输出数据
一、 客户端提交数据的方式
a) get:
l 如果表单没有设置method属性,则默认就会采用get方式
l 超链接也会采用get方式进行提交
b) post:
l 只有当表单设置了method属性,而且设置为post,才会采用post方式
二、 Servlet的使用
a) 命名规则:功能描述 + Servlet
l 例如:LoginServlet、StudentServlet
b) 继承:
class TestServlet extends HttpServlet
c) 配置:
d) 重写doGet和doPost方法
l doGet:处理get方式提交的请求
l doPost:处理post方式提交的请求
e) 获取客户端提交的数据
l String 数据 = 请求.getParameter(“name值”);
1. 根据name获取单个的value值
l String[] 数据集 = 请求.getParameterValues(“name值”);
2. 根据name获取多个同名的value值(常见于:复选框)
三、 中文乱码的解决
a) get方式:
l 产生乱码的原因在于:get方式提交的数据是追加到地址栏的,而客户端在发出请求时,地址栏会按照iso-8859-1的编码格式来提交,在服务器得到数据之后,将其按照iso-8859-1拆分为字节数组,再按照utf-8重新组装成String
l String 结果 = 请求.getParamter(“name值”);
l String 新结果 = new String(结果.getBytes(“iso-8859-1”),”utf-8”);
b) post方式:
l 因为post会将表单作为整体进行提交,所以只需要将表单的编码格式设置为utf-8
l 请求.setCharactorEncoding(“utf-8”);
一、Servlet的生命周期
Servlet只能用在服务器软件之内
Servlet的生命周期分为4个阶段:
创建对象(服务器软件自动创建对象:服务器会在第一次请求到达之时创建对象)
创建对象使用的方法是构造方法
初始化(服务器软件:创建对象之后)
init()
服务(每次请求到达都会执行)
service():会执行多次(由service方法来决定使用doGet还是doPost)
销毁(关闭服务器)
destroy()
二、Servlet的跳转
内部跳转:请求.getRequestDispatcher(路径).forward(请求, 响应);
外部跳转:响应.sendRedirect(路径);
区别:
1、内部跳转地址栏会显示请求的路径;外部跳转地址栏会显示最终的路径
2、内部跳转和外部跳转其实都是get方式提交数据
3、内部跳转能将请求中的数据传递下去;外部跳转不能将请求中的传递下去
结论:如果需要通过请求传递数据,则必须使用内部跳转;否则数据就丢失了
四、综合
登录操作
课时二
开发web项目
1、将项目所有的jsp编码格式设置为utf-8
window --> preferences --> myeclipse --> files and editors --> jsp --> utf-8
2、设置项目的编码格式为utf-8
项目名称 --> 右键 --> properties --> text file encoding --> utf-8
一、服务器之间数据的传递
保存数据:请求.setAttribute("名称", 数据);
读取数据:Object 数据 = 请求.getAttribute("名称");
只能使用内部跳转,才能将请求的数据进行传递
对比:
String 数据 = 请求.getParameter("名称"); //这是获取客户端发送的数据
Object 数据 = 请求.getAttribute("名称"); //这是获取服务器之间传递的数据
传递数据的2种特殊方式:
隐藏域:<input type="hidden" name="名称" value="值">
隐藏域一般用于表单
url重写:user?name=value&name1=value1&name2=value2
url重写一般用于超链接
二、jsp
jsp = html + java + css + js
在jsp中,<% java代码 %>
三、三层架构
(第一层:展示层):jsp
(第二层:控制层):servlet
(第三层:数据库访问层):dao
(实体类:传输数据的载体):entity