1.总结
这个阶段的学习是一个整合性质的学习了,将之前学习的html,java,jdbc等内容进行一次合并使用,在这个阶段的学习里个人任务最重要的就是认识到数据是如何传输,传输之中遇到了怎么样的问题,然后我们是怎么解决的。当然问题不只是传输还有关于对前面内容的简化,学习的前面的知识是为了认识的这些知识点是为什么,到了这个阶段就是如何更加简便的使用内容。
然后这个阶段学习多的还有就是如何将前端页面得到的数据传入后端,然后通过后端传入数据库,如何将后端的内容显示到前端页面上及其他问题。然后我们就了解到jsp一种类似与html的文件格式。但实际上jsp文件本质上是一个servlet,最终学会了如何在jsp里面使用el表达式,等不同的方法进行数据传递。
2.重点知识或体系
2.1servlet体系
/**
* Servlet体系
* servlet接口 <--实现-- GenericServlet <--继承-- HttpServlet
*/
/**
* 1,当服务器接受到客户端浏览器的调求后,会解析调求URL路径,获取访问的 Servlet的资源路径
* 2.查找web,xm文件,是否有对应的< url-pattern>标签体内容.
* 3.如果有,则在找到对应的< servlet-c1ass>全类名
* 4.tomcat会捋字节码文件加载进内存,井且创建其对象
* 5.调用其方法
*
* Servlet的init方法,只执行一次,说明一个 Servlet在内存中只存在一个对象, Servlet是单例的
* 多个用户同时访间时,可能存在线程安全问题
* 解决:尽量不要在 Servlet中定义成员变量.即使定义了成员变量,也不要对修改值
*/
public class ServletDemo1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {System.out.println("init初始化方法,servlet创建时执行");}
@Override
public ServletConfig getServletConfig() {/*获取servlet配置对象*/return null;}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) {System.out.println("hello world");}
@Override
public String getServletInfo() {/*获取(版本,作者)等信息*/return null;}
@Override
public void destroy() {System.out.println("destroy被正常关闭执行,在servlet销毁之前调用");}
}
@WebServlet("/Gener")
public class GenericServletDemo extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse){System.out.println("GenericServletDemo");}
}
@WebServlet({"/Http","/Http1"})
public class HttpservletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp){System.out.println("HttpServlet");}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp){doGet(req,resp);}
}
2.2request对象
/**
* Request
* 1. request对象和 response对象的原理
* 1. request和 response对象是由服务器创建的.我们来使用它们
* 2. request对象是来获取请求消息, response对象是来设置响应消息
* 2. request对象继承体系结构:
* ServletRequest 接口
* | 继承
* Httpservletrequest--接口
* | 实现
* org. apache. catalina connector. RequestFacade 类( tomcat编写)
* request:功能
* 获取请求数据
* 获取请求行:
* 例 请求行:GET /day15/demo2/Request?name=%E4%BD%A0%E5%A5%BD HTTP/1.1
* 请求方式[getMethod() GET]
* 虚拟目录[getContextPath() /day15]
* Servlet路径[getServletPath() /demo2/Request]
* 获取Get方法请求参数[getQueryString()]
* 获取请求URI(统一资源标识符(大)):[getRequestURI() /day15/demo2/Request]
* URL(同一资源定位符(小))[StringBuffer getRequestURL() http://localhost/day15/demo2/Reques]
* 协议版本[getProtocol()]
* 客户机IP地址[getRemoteAddr()]
* 获取请求头
* getHeader(String):根据请求头名称获取请求值
* Enumeration<String> getHeaderNames():获取所有请求头数据
* 获取请求体post
* 步骤:1.获取流对象(字符输入流[文字,表单],字节输入流[文件,图片])
* BufferedReader getReader():获取字符输入流,只能操作字符数据
* 见注册regist页面
* ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据,可以也操作字符
* 在文件上传演示
* 2.再拿数据
* 其他功能
* 1.获取请求参数(通用方式)
* 1.String getParameter(String name):根据名称获取值
* 2.String[] getParameterValues(String name):根据参数名称获取参数值数组
* 3.Enumeration<String> getParameterNames():获取所有请求参数名称
* 4.map<String,String[]> getParameterMap():获取所有参数及其值得map集合
* 2.请求转发:一种在服务器内部跳转的方式
* 1.通过request对象获取转发器对象:RequestDispatcher getRequestDispatcher(String path)
* 2.使用RequestDispatcher对象进行转发: forward(ServletRequest,ServletResponse)
* 特点:1.资源路径(浏览器地址栏)不发生变化
* 2.只能访问当前服务器内部部的资源
*