关于实验一的Jsp笔记 Part1:Servlet部分*
各种函数
用到的函数大全(按顺序)
// 主要就是这几个函数
request.getParameter(String ElementName)
request.setAttribute(String ElementName, String Value)
request.getRequestDispatcher(forward)
servlet.java里的函数
- 首先是要把自己写的 TestServlet继承HttpServlet
- 重写doGet和doPost方法
明确
首先明确一点,就是关于servlet的各种对象
- HttpServletRequest对象
客户发送给服务器的请求信息被封装在HttpServletRequest对象中,其中包含了由浏览器发送给服务器的数据,这些数据包括请求参数、客户端有关信息等。
Request说白了就是“请求”,是“客户->服务器”的。
他是ServletRequest的子类
- HttpServletResponse对象
Response是“响应”,是“服务器->客户”的。
他是ServletResponse的子类
分析doGet函数
// doGet响应
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{}
这个函数的流程:
- 获取用户在jsp界面的输入
- 创建模型对象(Bean对象)
- 调用Bean对象的自带函数来进行验证,返回值a
- 根据a的不同情况进行页面跳转
第一步、获取输入
String head = request.getParameter("head"); // 类似于getElementById
String foot = request.getParameter("foot");
String keywords = request.getParameter("keywords");
- 页面首先由客户端提交给服务器,所以使用request对象,客户端request给服务器。
过程是,用户输入->确定->request对象接收到了数据->request.getParameter获取数据
这里主要采用的是getParameter()函数,这一类函数有
public String getParameter(String name) // 返回对应name的value
public String[] getParameterValues(String name) // 返回对应name的所有value
public Enumeration getParameterNames() // 返回所有请求参数
public Map getParameterMap() // 返回包含所有请求参数的Map对象
注意!
这个响应对应的form对象的数据处理,这个我就略过了…因为也不是啥大问题,就Java web教材第49页有介绍。
第二步、创建对象模型
Bean user = new Bean();
第三步、验证数据
// 调用业务方法进行验证
boolean b = user.validate(head,foot,keywords);
- 这里比较特殊,因为这个只需要进行小验证对比就可以,实际上应该是有一个数据库Sql数据库,然后把id传过去,通过这个Bean对象的函数来验证数据库里是否有他的账户和密码,然后返回正确错误才对。
- 但是这个直接验证就可以了。
- 总而言之,这个地方返回个boolean就可以
第四步、发送响应
我们这个小项目这里的发送响应,得到的其实就是一个小的页面跳转
if(b){
request.setAttribute("head", head); // 返回页面的id里面的value
request.setAttribute("foot", foot); // 这个是和el表达式连用的
request.setAttribute("keywords", keywords);
// 目标转向文件是success.jsp
forward = "success.jsp";
- 就以这个为例子,这里的setAtteribute的意思是,用request的函数,来对String value进行修改
这种就类似于数据结构课学的C语言的那种传指针修改的样子。 - 总之,修改完了request传给的value,把forward字符串修改成success.jsp,进入下一步
可以看到,这里涉及到的是如何通过使用请求对象request来存储数据,类似的还有
public void setAttrbute(String name,Object obj)
public Object getAttribute(String name)
public Enumeration getAttributeNames()
public void removeAttribute(String name)
第五步、完成跳转
// 获取Dispatcher对象
RequestDispatcher dispatcher = request.getRequestDispatcher(forward);
// 完成跳转
dispatcher.forward(request,response); // 跳转的实现
- 跳转功能的实现,采用的是request.getRequestDispatcher(String url)函数完成的
关于第四步和第五步的说明
其实响应的方式有两种,
第一种是转发请求,一种是重定向
- RequestDispatcher接口定义了两个方法,
// 将请求转发到服务器上的另一个动态或静态资源
public void forward(ServletRequest request, ServletResponse response)
// 将控制转发到指定的资源,并将其输出包含到当前输出中
public void include(ServletRequest request, ServletResponse response)
我们这里做的就是一个小的跳转
- 输出流
// 动态残生页面的输出函数
PrintWriter out = response,getWriter();
// 二进制数据
ServletOutputStream sos = response.getOutputStream();
// 重定向
public void senRedirect(String location)
总之就这些,涉及到servlet的大概就这些比较重要
其实无论如何,都是客户端与服务器的交流,要么S2C要么C2S
- 处理请求 request
- 发送响应 response
就这吧,先记到这