三. 通过人事管理系统学习-----了解JSP的内置对象!!!(并且温习java基础的方法)
????????????一、JSP学习,我的第一个jsp文件
????????????二、JSP的基本语法小知识!!
通过人事管理系统的练习了解九大内置对象的介绍
HTTP协议简介
协议是代表我们的客户端与服务器端交流的一种方式,http协议是一种超文本传输的协议方式。
- HTTP请求:代表客户端在访问web资源的过程(请求)
- HTTP响应:服务端接受用户请求后,通过http协议,将资源响应给客户端
JSP内置对象简介
- 请求与响应模式:代表的是客户端与服务器端交互的一种模式,
- 在JSP中,请求与响应对象是通过内置对象存在的
JSP内置对象:
- 内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用
- 为什么使用:使用内置对象,节省开发效率
作用域:代表数据存储的一个范围。(数据想在不同的数据之间进行共享)
pageContext, request, session, application
九大内置对象的常用方法介绍
Request
封装了由WEB浏览器或其他客户端生成HTTP请求的细节(参数,属性,头衔和数据)
OUT
代表输出流的对象,通过out对象向页面输出指定内容
Response
封装了返回到HTTP客户端的输出,向页面作者提供设置响应头标和状态码的方式
request作用域:用户的请求周期,用户在发送请求,服务器做出响应的这段时间内如果需要共享数据时,我们可以吧当前数据存储到request作用域中。
人事管理系统实战
- 通过集合模拟数据库中的数据信息
1.首先在Java Resources中创建一个com.kilig.staff的员工包,然后创建封装类Emp类。来加入用户的常用属性,构造方法以及get和set方法
这些都是我们的系统可以一键生成的
2.创建数据库操作类,创建com.kilig.db包,然后新建类名为DBUtil
- 因为为了便于介绍,我们就没有使用数据库的内容进行介绍,在这儿将数据库信息通过集合来进行模拟
- 首先创建Map集合,而我们也是到HashMap是需要键值对的(key-value)因为编号是唯一的所以key--编号,value就是Emp类
- 并且同时创建集合内的数据信息
3.为了操控数据库,我们就需要编写一个selectEmpAccountAndPassword() 方法去判断用户名和密码是否正确
- 判断用户输入的对象是否在当前Emp对象中存在,如果存在返回true,否则返回false
- 通过 Emp e =map.get(key); 来获取集合中的emp对象
- 如果emp中的account,等于集合中某个key对应的account,并且密码的条件也满足,那么flag=true
4.在项目的WebContent部分编写登录页面login.jsp
创建form表单,封装用户操作的内容,可以在提交表单的过程中,将表单内容发送给服务器端,让服务器端有应用程序来处理form表单
5.现在需要再点击登录按钮时,有一个服务器端的JSP页面,可以处理人事管理系统的登录页面,也就是需要一个业务逻辑处理代码,需要制定到某一个action中
- 所以我们新建一个处理表单的jsp control.jsp
- 首先让我们做一个测试,看是否可以接受用户请求,获取用户的输入内容,并且做出一些响应
- 也就是说,当我们点击提交login时,它应该找到login.jsp中的form表单,在action,中提交表单对应的处理程序
- 所以我们需要在login.jsp页面中找到form表单,将form表单的内容封装到请求对象control.jsp中。
6.此时,当我们输完登录信息,会发现,他会跳转到control.jsp页面
7.接下来我们在control.jsp来进行处理用户发来的请求
- 获取账号以及密码,并且去调用DBUtil中的方法来判断是否存在指定信息
- 1、如果DBUtil返回值=true,那么需要显示成功的页面
- 2、如果DButil返回值=false,那么显示错误消息
Request ????♀️????♀️????♀️点击查看具体介绍和方法总结
login.jsp将form表单的内容封装到请求对象control.jsp中。并且封装到request的对象中,此时服务器端的control.jsp就可以通过内置对象 Request内置对象来获取请求信息,包括请求信息
Request提供的方法:
- getParameter(String name) 可以通过一个控件的name属性来获取控件的值
所以现在第一步,是需要我们获取用户输入的值
8.接下来我们想看看 account 和 password 是否在我们的control页面中
Out ????????????????????????点击查看具体介绍和常用方法
out:输出流对象,输出指定的信息
方法:println();
运行测试可以看到,我们目前可以正常获得我们的账号和密码
9.现在,我们的control.jsp页面不是仅仅调用账号密码就可以了,而是要实现之前在DBUtil中我们定义的selectEmpAccountAndPassword()方法,帮我们提供返回值
- 因此接下来我们需要调用DBUtil,进行导包操作
- 将account和password封装到当前对象中,创建emp对象,并且传递四个成员属性的值,由于name,email我们传入的是空,所以现在为null
- 获取DBUtil的Boolean数值,进行判断
让我们做个测试!
- 首先输入一个错误的信息
- 再输入一个正确的存在的信息
可以看到,我们成功了一大步!!!!!现在只需要稍微改一改就ok输入的不应该是文本而是一些数据信息!!!????????????????????
10.登陆成功的页面,展示员工的信息
- 我们知道,在jsp页面中,我们可以使用脚本元素<%%>来区别HTML和java代码
11.此时,我们知道我们的员工信息是在DBUtil中静态体现,所以我们可以获取静态的属性
所以我们在java代码中获取map集合要记得导包!!
这里出错是因为我们之前在DBUtil类中创建map集合对象没有使用公开方法,加上public即可。
12.此时遍历map集合,并且对生成的元素生成对应的<tr>
要学会合理的应用脚本元素!!
13.现在让我们进行测试看一看!
可以看到,这就是我们登录成功后所显示的员工登录信息!
response ????????????点击查看方法的说明和总结
响应对象
测试看一看!
request作用域
我们知道,jsp有四种作用域
那你request作用域是在相邻两web资源之间,如果共享同一个request请求对象,那么我们可以把数据存储到request作用域当中,方便两个web资源之间可以传递一些需要的数据。
错误的示范::
这是login.jsp 这是control.jsp