web开发:所谓web开发就是基于浏览器服务器的开发
下面将web开发基础知识作个总结:1.http协议:是建立在TCP协议上的,基于请求响应的模型2.http请求:面试题:说说get与post的区别a.传递数据量:get只能传递1kb以下的数据,post可以传递大数据b.安全性:get请求,如果携带参数,参数会直接显示在浏览器上,而post不会所以post请求会更安全c.get请求,有请求参数,参数是在请求行的资源路径上post请求,请求参数在请求正文中,这就解释了第二条,为什么post请求更安全开发中,如果请求响应的是页面,则一般用get请求,不需要携带参数如果需要传递数据参与计算,或者js中的请求等等,常需要数据的交互,则使用post开发中常常使用chrome查看请求响应的内容,作调试3.servlet:web开发的核心java类,主要功能是接收浏览器的请求(数据),内部作相关运算,给出响应编写Servlet类:public class LifeServlet implements Servlet{ @Override public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException { //接收请求,响应,类似于控制层的代码 //这里请求,响应是可以自己设置的,自己设置请求头,请求体,响应头,响应状态,响应内容 }}
4.request,response
当服务器接收到请求后,请求信息就会封装到request对象中,服务器给出响应后,响应信息就会封装到response中request的生命周期:接收请求时创建,产生响应后就会销毁,只存在一次请求响应之间注意:从Servlet跳转到jsp不算响应结束了,因为request域对象在jsp中还是可以用的,这是jsp的内置对象,后面会讲到应该这样说,从Servlet跳转到jsp,数据被jsp解析(el表达式各种)显示出来了,这样才算响应了,才是一次完整的请求响应那么程序是怎样从Servlet跳转到jsp的呢?两种方式:请求转发和重定向它们的区别是什么?先看看继承HttpServlet后重写的doPost方法(写Servlet的另外一种方式,该方法相当于service方法)里面的一块代码:public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {.......//请求转发//将学生列表设置到requet中//request.setAttribute("student_list", studentList);//转发是在服务器端转发的,客户端是不知道的//request.getRequestDispatcher("/student_list.jsp").forward(request, response);//重定向//将studentList放到session中HttpSession session = request.getSession();session.setAttribute("student_list", studentList);response.sendRedirect(request.getContextPath() + "/student_list.jsp");}
说明:
请求转发是一次请求响应,转发发生在服务器内部,所以在这期间,requet域数据是共享的,所以可以数据可以存在requet域中,然后转发重定向实际上是一次请求响应,然后再一次请求响应,这样显然数据不能存在requet域中,可以存在session中,然后重定向为什么可以存在session中,涉及到session保存数据的周期,后面会讲到请求转发在服务器端完成的,重定向是在客户端完成的请求转发的速度快,重定向速度慢因为是一次请求,所以请求转发地址栏没有变化,而重定向地址栏会发生变化请求转发必须在一台服务器下完成,重定向可以在不同服务器下完成5.cookie与session这是浏览器的会话技术什么是会话:就是打开浏览器到关闭浏览器就是一次会话cookie是什么?可以这样理解:当浏览器请求服务器的时候,服务器会创建cookie(里面存储的访问数据)然后在响应的时候,将cookie发送给浏览器,最后在浏览器保存默认情况下:cookie的生命周期是一次会话,也就是关闭浏览器就没了可以使用方法,让cookie持久化(时间),让其关闭浏览器还存在,这有什么用?后面会讲到session:session是服务端的会话技术,但是session的实现依赖cookie默认情况下:session的生命周期也是一次会话.这就解释了为什么在关闭浏览器后,再次打开时又要重新登录了(登录信息存在session 中)
依赖cookie,这也解释了为什么在浏览器清楚缓存后,也是要重新登录页面的
在tomcat/conf/web.xml文件中有一段配置了如果session如果在30分钟没有使用就会销毁,这是可以更改的6.jsp的九大内置对象就是直接可以在jsp上使用的对象,包括request域对象,session域对象等其实jsp本质上是个特殊的servlet,就是为了接收数据显示数据接收数据,数据可以存在域对象中,也可以存在封装好的javaBean中显示数据,各种el表达式,jq前端框架工作中session域中存放:用户信息,用户角色,对于模块存用户角色是为了权限控制,在前端判断按钮的显示等等