1. 端口被占用:
暴力:找到占用的端口号,
并且找到对应的进程,杀死该进程
* netstat -ano,找到对应端口对应的pid,
在到任务管理器中找到进程,在点击pid,
找到相应的pid关闭便可
3. 获取文件的真实(服务器)路径, //获取这个文件的真实路径
重点:重点:重点:
利用
ServletContext context = request.getServletContext();
context对象调用这些办法:
1,src目录下的资源的真实路径必须加("/WEB-INF/classes/文件名称");
2,web目录下资源访问直接("文件名称");
3,WEB-INF目录下的资源路径必须加("/WEB-INF/文件名称");
ServletContext context = request.getServletContext();
String path = JsoupDemo1.class.getClassLoader().getResource(“student.xml”).getPath();
//这个web用不了,getRealPath用这个
String getRealPath(String path)
String b = context.getRealPath("/b.txt");//web目录下资源访问
String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问
String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问
如果文件不再src,web,web-inf里面的xxx1,xxx2文件中,就不要加,在src,web,web-inf的根根目录中
就把xxx1文件夹/xxx2文件夹删除了
请求转发:
1. 通过request对象获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path)
2. 使用RequestDispatcher对象来进行转发:forward(ServletRequest request, ServletResponse response)
request.getRequestDispatcher("/successServlet").forward(request,response);
网址栏地址不变
重定向也可以转发到别的页面
HttpSession session = request.getSession();
session.setAttribute("error","抱歉你输入的用户名或者密码错误, 请重新输入");
response.sendRedirect("/Day01_war_exploded/index.jsp");
等价=request.getRequestDispatcher("/index.jsp").forward(request,response);
重定向和请求转发的不同:
1,请求转发不需要加虚拟目录(/Day01_war_exploded)-----
//request.getRequestDispatcher("/index.jsp").forward(request,response);
2,重定向需要加虚拟目录(/Day01_war_exploded)-----
// response.sendRedirect("/Day01_war_exploded/index.jsp");
3,请求转发地址栏不变,重定向地址栏改变
4,转发是一次请求,可以使用request对象来共享数据
5,重定向是两次请求。不能使用request对象来共享数据
6,重定向可以访问其他站点(服务器)的资源
7,转发只能访问当前服务器下的资源
请求转发特点:
1,请求转发不需要加虚拟目录(/Day01_war_exploded)-----
//request.getRequestDispatcher("/index.jsp").forward(request,response);
2,请求转发地址栏不变,
3,转发是一次请求,可以使用request对象来共享数据
4,转发只能访问当前服务器下的资源
重定向特点:
1,重定向需要加虚拟目录(/Day01_war_exploded)-----
// response.sendRedirect("/Day01_war_exploded/index.jsp");
2,重定向是两次请求。不能使用request对象来共享数据
3,重定向可以访问其他站点(服务器)的资源
4,重定向地址栏改变
重点:
使用request对象来共享数据:
3. 共享数据:
域对象: 一个有作用范围的对象,可以在范围内共享数据
1,* request域:
2,* session域;
3,ServletContext域(整体可以共享)
1, * request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
//不支持重定向,支持请求转发
2, * session域;
1. 获取HttpSession对象:
HttpSession session = request.getSession();
2. 使用HttpSession对象:
3. 原理
* Session的实现是依赖于Cookie的。
* 三个域对象的共享对象方法:
1. void setAttribute(String name,Object obj):存储数据
2. Object getAttitude(String name):通过键获取值
3. void removeAttribute(String name):通过键移除键值对
细节:
1. 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?
* 默认情况下。不是。
* 如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
Cookie c = new Cookie("JSESSIONID",session.getId());
c.setMaxAge(60*60);
response.addCookie(c);
3,ServletContext域(整体可以共享)
## ServletContext对象:
1. 概念:代表整个web应用,可以和程序的容器(服务器)来通信
2. 获取:
1. 通过request对象获取
request.getServletContext();
2. 通过HttpServlet获取
this.getServletContext();
3. 功能:
1. 获取MIME类型:
* MIME类型:在互联网通信过程中定义的一种文件数据类型
* 格式: 大类型/小类型 text/html image/jpeg
* 获取:String getMimeType(String file)
2. 域对象:共享数据
1. setAttribute(String name,Object value)
2. getAttribute(String name)
3. removeAttribute(String name)
* ServletContext对象范围:所有用户所有请求的数据
3. 获取文件的真实(服务器)路径
src目录下的资源的真实路径必须加("/WEB-INF/classes/
ServletContext context = request.getServletContext();
1. 方法:String getRealPath(String path)
String b = context.getRealPath("/b.txt");//web目录下资源访问
System.out.println(b);
String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问
System.out.println(c);
String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问
System.out.println(a);
提示:
加不加虚拟目录:
* 规则:判断定义的路径是给谁用的?判断请求将来从哪儿发出
* 给客户端浏览器使用:需要加虚拟目录(项目的访问路径)
* 建议虚拟目录动态获取:request.getContextPath()
* <a> ,<form> 重定向...
* 给服务器使用:不需要加虚拟目录
* 转发路径不需要加
*重定向需要加
重要办法:
重要办法:
3. 获取文件的真实(服务器)路径, //获取这个文件的真实路径
重点:重点:重点:
利用
ServletContext context = request.getServletContext();
context对象调用这些办法:
1,src目录下的资源的真实路径必须加("/WEB-INF/classes/文件名称");
2,web目录下资源访问直接("文件名称");
3,WEB-INF目录下的资源路径必须加("/WEB-INF/文件名称");
ServletContext context = request.getServletContext();
String path = JsoupDemo1.class.getClassLoader().getResource(“student.xml”).getPath();
String getRealPath(String path)
String b = context.getRealPath("/b.txt");//web目录下资源访问
String c = context.getRealPath("/WEB-INF/c.txt");//WEB-INF目录下的资源访问
String a = context.getRealPath("/WEB-INF/classes/a.txt");//src目录下的资源访问
* parse(String html):解析xml或html字符串
* parse(URL url,int timeoutMillis):通过网络路径获取指定的html或xml的文档对象
* getElementById(String id):根据id属性值获取唯一的元素对象
* getElementsByTag(String tagName):根据标签名称获取元素对象集合
* getElementsByAttribute( String key):根据属性名称获取元素对象集合
* getElementsByAttributeValue(String key,String value):根据对应的属性名和属性值获取元素对象集合
* String attr(String key):根据属性名称获取属性值
获取文本内容
* String text():获取文本内容
* String html():获取标签体的所有内容(包括字标签的字节串内容)
1. 获取请求方式 :GET
* String getMethod()
2. (*)获取虚拟目录:/day14
* String getContextPath()
3. 获取Servlet路径: /demo1
* String getServletPath()
4. 获取get方式请求参数:name=zhangsan
* String getQueryString()
5. (*)获取请求URI:/day14/demo1
* String getRequestURI(): /day14/demo1
* StringBuffer getRequestURL() :http://localhost/day14/demo1
* URL:统一资源定位符 : http://localhost/day14/demo1 中华人民共和国
* URI:统一资源标识符 : /day14/demo1 共和国
6. 获取协议及版本:HTTP/1.1
* String getProtocol() 7. 获取客户机的IP地址:
* String getRemoteAddr()
2. 获取请求头数据
* 方法:
* (*)String getHeader(String name):通过请求头的名称获取请求头的值
* Enumeration
<String> getHeaderNames():获取所有的请求头名称
1. String getParameter(String name):根据参数名称获取参数值 username=zs&password=123
2. String[] getParameterValues(String name):根据参数名称获取参数值的数组 hobby=xx&hobby=game
3. Enumeration
<String> getParameterNames():获取所有请求的参数名称
4. Map
<String
,String[]> getParameterMap():获取所有参数的map集合 * 中文乱码问题:
* get方式:tomcat 8 已经将get方式乱码问题解决了
* post方式:会乱码
* 解决:在获取参数前,设置request的编码request.setCharacterEncoding("utf-8");
1. void setAttribute(String name,Object obj):存储数据
2. Object getAttitude(String name):通过键获取值
3. void removeAttribute(String name):通过键移除键值对 4. 获取ServletContext:
4 ServletContext getServletContext() //获取所有参数
Map
<String
, String[]> map = request.getParameterMap();
设置状态码:setStatus(int sc)
设置响应头:setHeader(String name, String value)
3. 告诉浏览器响应体使用的编码
response.setContentType("text/html;charset=utf-8");
1. 创建Cookie对象,绑定数据
* new Cookie(String name, String value)
2. 发送Cookie对象
* response.addCookie(Cookie cookie)
3. 获取Cookie,拿到数据
* Cookie[] request.getCookies() 3. 实现原理
* 基于响应头set-cookie和请求头cookie实现 4. cookie的细节
1. 一次可不可以发送多个cookie?
* 可以
* 可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。
2. cookie在浏览器中保存多长时间?
1. 默认情况下,当浏览器关闭后,Cookie数据被销毁
2. 持久化存储:
* setMaxAge(int seconds)
1. 正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效
2. 负数:默认值
3. 零:删除cookie信息
1. <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。 4. JSP的内置对象
版权声明:未标注转载均为本站原创,转载时请以链接形式注明文章出处。如有侵权、不妥之处,请联系站长删除。敬请谅解!
常见资源合集和破解 fmvvvteih...