linux怎么查看本机内存大小
271
2022-09-27
Servlet - 基础篇
JSP与Servlet的不同a、JSP在本质上就是SERVLET,但JSP是Servlet的一种简化,JSP由HTML代码和JSP标签构成,可以方便地编写动态网页。b、Servlet完全是由JAVA程序代码构成流程控制和事务处理。c、Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。JSP侧重于视图,Servlet主要用于控制逻辑。Servlet 简介- Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器。- 用Java编写的服务器端程序。- 主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet 路径问题
<% String basePath = request.getScheme()+":"+"//"+request.getServerName()+":"+request.getServerPort()+"/" +request.getServletContext().getContextPath()+"/";%>
Ps:注意:此处的/可以去掉,因为getContextPath()返回值有/。
Servlet - service 方法重写问题请求与响应- 浏览器对服务器的一次访问称之为一次请求,请求用 HttpServletRequest 对象来表示。- 服务器给浏览器的一次反馈称之为一次响应,响应用HttpServletResponse对象来表示。ServletContext 与 ServletConfig1 Java是一门面向对象的语言,万事万物皆对象。整个JavaWeb工程也可以用一个对象来表示,这个对象就是ServletContext类型。
package cn.java.servlet;import java.io.IOException;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.javax.servlet.javax.servlet.class Demo1Servlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取代表某一个JavaWeb工程的ServletContext对象 // Context对象是一个域对象,可以往某一个域对象中存放数据,并且还可以取出存放的数据 ServletContext context = this.getServletContext(); // 往context域对象中存放数据 context.setAttribute("username", "张三"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
package cn.java.servlet;import java.io.IOException;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.javax.servlet.javax.servlet.class Demo2Servlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext context = this.getServletContext(); // 取出key=username所对应的值 Object result = context.getAttribute("username"); System.out.println(result); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
Input:localhost:8888/imooc_servlet1/Demo2ServletConsole:张三
2 我们可以在web.xml文件中给某一个Servlet配置一些配置信息,当服务器被启动的时候,这些配置信息就会被封装到某一个ServletConfig对象中去。因此ServletConfig表示的是某一个Servlet的配置文件。
package cn.java.servlet;import java.io.IOException;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.javax.servlet.javax.servlet.class Demo3Servlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 首先需要获取ServletConfig对象 ServletConfig sc = this.getServletConfig(); // 获取sc这个对象中封装的参数信息 String encoding = sc.getInitParameter("encoding"); System.out.println("encoding=" + encoding); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
Input:localhost:8888/imooc_servlet1/Demo3ServletConsole:encoding=utf-8
3总结:ServletContext对象:表示的是整个JavaWeb工程;ServletConfig对象:表示的是某一个Servelt中的配置文件。转发与重定向的区别【★★★★★】- 实现转发调用的是HttpServletRequest对象中的方法,实现重定向调用的是HttpServletResponse对象中的方法。- 转发时浏览器中的url地址栏不会发生改变,重定向时浏览器中的url地址会发生改变。- 转发时浏览器只请求一次服务器,重定向时浏览器请求两次服务器。- 转发可以通过 request、session、application 传输数据,重定向可以通过 session、application 传输数据。- 转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:
转发过程:客户浏览器发送——> web服务器接受此请求 ——> 调用内部的一个方法在容器内部完成请求处理和
转发动作 ——> 将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
重定向过程:客户浏览器发送——> web服务器接受后发送302状态码响应及对应新的location给客户浏览器 ——> 客户浏览器发现是302响应,则自动再发送一个新的——> 服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
附:重定向,其实是两次request:
第一次,客户端request A,服务器响应,并 response 回来,告诉浏览器,你应该去B。这个时候浏览器可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。
- 通俗版解释,假设你去办理某个执照...重定向:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去了B局。
转发:你先去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来。
package cn.java.servlet;import java.io.IOException;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.javax.servlet.javax.servlet.class Demo4Servlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 转发带数据给某个jsp页面 // request.setAttribute("username", "王二麻子 "); // request.getRequestDispatcher("/demo.jsp").forward(request, response); // 通过重定向带数据过去 ServletContext sc = request.getServletContext(); sc.setAttribute("goods", "娃娃"); response.sendRedirect("/imooc_servlet1/demo.jsp"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }}
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
Servlet - 映射多地址实现跳转JavaWeb - JSP、Servlet、Request、Response、Get、Post 中文乱码问题web.xml 中 load-on-startup 标签的含义在servlet的配置当中,
Example:
不需要servlet处理的配置:default
待更新...
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~