精华内容
下载资源
问答
  • Servlet请求和响应

    2020-03-10 18:09:29
    2、响应 HttpServletResponse 请求头、请求行、请求体(请求参数)。 package net.pp.servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http...

    1、请求 HttpServletRequest      响应 HttpServletResponse

    请求头、请求行、请求体(请求参数)。

    package net.pp.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.swing.*;
    import java.io.IOException;
    import java.util.Enumeration;
    
    public class HelloService extends HttpServlet{
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException{
            //请求 HttpServletRequest
            //获取请求行
            System.out.println("接收到get请求");
            System.out.println("请求方式:" +request.getMethod());
            System.out.println("URL:" +request.getRequestURL());
            System.out.println("发出请求客户端IP地址:"  +request.getRemoteAddr());
            System.out.println("服务点接收请求的IP地址:" +request.getLocalAddr());
            System.out.println("访问客户端的端口号:" +request.getRemotePort());
            System.out.println("WEB应用路径:" +request.getContextPath());
            System.out.println("HTTP协议和版本" +request.getProtocol());
    
            //获取请求头
            Enumeration<String> headerNames = request.getHeaderNames();
                        while (headerNames.hasMoreElements()){
                            String element = headerNames.nextElement();
                            System.out.println(element+":"+request.getHeader(element));
                        }
            //获取请求参数
            String name = request.getParameter("name");
            String passWord = request.getParameter("passWord");
            System.out.println("用户名:" + name);
            System.out.println("密码:" + passWord);
    
            //响应 HttpServletResponse
            String result = "恭喜您登陆成功";
            //法一:
            ServletOutputStream outputStream = response.getOutputStream();
            outputStream.write(result.getBytes());
            //法二:
            response.setContentType("text/html;charset=utf-8");//将iso转化为utf-8,否则会出现码
            PrintWriter writer = response.getWriter();
            writer.write(result);
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
            System.out.println("接收到post请求");
        }
    
    }
    

    get.html

    <center>
    
        <h2>发起HTTP get请求</h2>
        <form action="hi" method="get">
            <p>账号:<input type="text" name="name" /></p>
            <p>密码:<input type="text" name="passWord" /></p>
            <input type="submit" value="提交" />
        </form>
    
    </center>

    结果如下:

     

    2、ServletContext对象

    ServletContext对象是它对应的Web应用环境的相关配置信息

    应用:

    1)获取整个Web项目初始化参数;

    2)在多个Servlet中共享数据;

    3)读取Web项目中的资源文件。

     

    1.获取整个Web项目初始化参数;

    ServletTest2.java

    package net.pp.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "ServletTest2", urlPatterns = "/test2")
    public class ServletTest2 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            //利用getServletContext()获取全局变量
            String encoding = this.getServletContext().getInitParameter("encoding");
            this.getServletContext().getInitParameterNames();
            System.out.println(encoding);
    
        }
    }
    

    结果是: 

    2.在多个Servlet中共享数据

    ServleTest3.java

    package net.pp.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "ServletTest3", urlPatterns = "/test3")
    public class ServletTest3 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String data = "pengpeng";
            this.getServletContext().setAttribute("name", data);
    
        }
    }
    

    ServleTest4.java

    package net.pp.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    @WebServlet(name = "ServletTest4", urlPatterns = "/test4")
    public class ServletTest4 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            String name = (String) this.getServletContext().getAttribute("name");
            System.out.println(name);
    
        }
    }
    

     结果是:

    3)读取Web项目中的资源文件

    ServletTest5.java

    package net.pp.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Properties;
    
    @WebServlet(name = "ServletTest5", urlPatterns = "/test5")
    public class ServletTest5 extends HttpServlet {
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            InputStream resourceAsStream = this.getServletContext().getResourceAsStream("/db.properties");
            Properties properties = new Properties();
            properties.load(resourceAsStream);
            String name = properties.getProperty("name");
            String password = properties.getProperty("passWord");
            String url = properties.getProperty("url");
    
            System.out.println(url);
            System.out.println(name);
            System.out.println(password);
        }
    }
    

     db,properties

    url=jdbc:mysql://localhost:3306
    name = mysql of pengpeng
    passWord = 888888

    结果是: 

    展开全文
  • 1.加载 Servlet类被加载到Java虚拟机中,...默认情况下Servlet是在第一次请求的时候加载,但是可以通过&lt;load-on-startup&gt;标签设置Servlet在Web容器启动的时候加载。2.初始化 Web容器在初始化Servlet...

    1.加载
    Servlet类被加载到Java虚拟机中,并且实例化。在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一个Servlet类的实例对象。默认情况下Servlet是在第一次请求的时候加载,但是可以通过<load-on-startup>标签设置Servlet在Web容器启动的时候加载。
    2.初始化
    Web容器在初始化Servlet的时候会调用init()方法,所以初始化代码应该放在init()方法中,如打开数据源等。
    3.提供服务
    当有HTTP请求指向Servlet的时候,调用service()方法。如果是继承自HttpServlet的话,根据不同的请求类型业务逻辑代码会包含在doGet()或doPost()方法中。
    4.销毁
    当重新部署Web应用或者关闭Web容器等的时候将调用Servlet的destroy()方法。

    Servlet处理请求的过程
    1.Web服务器接收到请求转给容器
    2.容器根据请求及web.xml判断对应的Servlet是否存在,如果不存在则返回404
    3.容器根据请求及web.xml判断对应的Servlet是否已经被实例化,若是相应的Servlet没有被实例化,则容器将会加载相应的Servlet到Java虚拟机并实例化
    4.调用实例对象的service()方法,并开启一个新的线程去执行相关处理。

    展开全文
  • package com.bsoft.servlet; import java.io.IOException; import java.io.PrintWriter;...import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServle...
    package com.bsoft.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.bjsxt.pojo.User;
    import com.bjsxt.service.LoginService;
    import com.bjsxt.service.impl.LoginServiceImpl;
    
    /**
     * 解决请求数据乱码问题 
     *  1.使用String进行数据重新编码 uname=new
     * String(uname.getBytes("iso8895-1"),"utf-8"); 
     *   2.使用公共配置 
     *   get方式: 
     *       步骤一:
     *     req.setCharacterEncoding("utf-8"); 
     *       步骤二:
     * 在tomcat的目录下config目录中修改sever.xml文件,在Connector标签中增加属性
     * useBodyEncodingForURI="true" 
     *   post方式: req.setCharacterEncoding("utf-8");
     * 
     * 解决响应数据乱码问题 resp.setContentType("text/html;charset=utf-8");
     * 
     */
    public class LoginServlet extends HttpServlet {
    	@Override
    	protected void service(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    
    		// 设置请求编码格式
    		req.setCharacterEncoding("utf-8");
    
    		// 设置响应编码
    		resp.setContentType("text/html;charset=utf-8");
    		// 获取请求数据
    		String username = req.getParameter("username");
    
    		// username = new String(username.getBytes("iso8859-1"), "utf-8");
    		// //使用string进行编码
    		String pwd = req.getParameter("password");
    		System.out.println("username=" + username + ",password=" + pwd);
    
    		PrintWriter pw = resp.getWriter();
    
    		// 处理请求信息
    		// 获取业务层对象
    		LoginService ls = new LoginServiceImpl();
    		User u = ls.checkLoginService(username, pwd);
    		if (u != null) {
    			pw.println("登录成功");
    			// 使用重定向
    			// resp.sendRedirect("LoginSuccess");
    			// 使用请求转发
    			req.getRequestDispatcher("LoginSuccess").forward(req, resp);
    		} else {
    			// 使用request对象实现不同servlet之间数据的流转
    			req.setAttribute("str", "用户名或密码错误");
    			pw.println("登录失败");
    //			resp.sendRedirect("LoginPage");
    			req.getRequestDispatcher("LoginPage").forward(req, resp);
    
    		}
    
    	}
    }
    

     

    展开全文
  • 方式:GETPOST GET: (1)地址栏中直接给出参数: http://localhost/param/ParamServlet?a1=aa&a2=a2 (2)超链接中给出参数: 链接请求 张三">点击 (3)表单中给出的参数:...

    1.HttpServletRequest获取参数

    String getParameter(String name):通过指定名称获取参数值
    
    String[] getParameterValues(String name):通过指定名称获取参数值数组,有可能一个名字对应多个值,例如表单中的多个复选框使用相同的name时。
    
    Enumeration getParameterNames(): 获取所有参数的名字
    
    Map getParameterMap():获取所有参数对应的Map,其中key为参数名,value为参数值。

    2.传递及获取参数的方式

    方式:GET和POST

    GET:

    (1)地址栏中直接给出参数:http://localhost/param/ParamServlet?a1=aa&a2=a2

    (2)超链接中给出参数:

    <h1>链接请求</h1>
    <a href="/HelloWord_war_exploded/hello?name=张三">点击</a>

    (3)表单中给出的参数:<form method="GET" acton="paramservelt">....</form>

    POST:

    (1)表单中给出的参数:<form method="GET" acton="paramservelt">....</form>

     <h1>表单提交</h1>
      <form action="/HelloWord_war_exploded/hello?" method="get">
        姓名:<input type="text" name="name"><br>
        年龄:<input type="text" name="age"><br>
        爱好:
          <input type="checkbox" value="1" name="favor">篮球
          <input type="checkbox" value="2" name="favor">足球
          <input type="checkbox" value="3" name="favor">游泳
        <br>
        <input type="submit" value="提交">
      </form>
    • String getParameter(String name)单参数获取
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class Test01 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            /*
            *单值接收
            * */
            // 根据请求中的key来获得值
            String name = req.getParameter("name");
            String age = req.getParameter("age");
            // 不适合接收多选,他只能接收到多选中的第一个
            // String favor = req.getParameter("favor");
            System.out.println(name);
            System.out.println(age);
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }
    

     

    • HttpServletRequest多参获取
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class Test01 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
            /*
             *多值接收
             * */
            // 接收多选
            String[] favors = req.getParameterValues("favor");
            for (String val : favors) {
                System.out.println(val);
            }
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }
    
    • Enumeration getParameterNames()的使用
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.Enumeration;
    
    public class Test02 extends HttpServlet {
        /*
        * getParameterNames用于获得表单中文本域的所有的name,适合动态表单
        * */
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // 获得表单中所有文本域的name
            Enumeration<String> names = req.getParameterNames();
            while (names.hasMoreElements()) {
                // 获得每个文本域的name
                String s = names.nextElement();
                // 根据文本域的name来获得值
                String[] values = req.getParameterValues(s);
                for (String value : values) {
                    System.out.println(value);
                }
            }
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }
    

     

     

    • Map getParameterMap()取值
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.Map;
    import java.util.Set;
    
    public class Test03 extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            // 获得表单中所有文本域的name和值,以map方式存储
            Map<String, String[]> map = req.getParameterMap();
            // 获得map的key(就是表单中文本域的name集合)
            Set<String> set = map.keySet();
            for (String name : set) {
                // 获得每个文本域所对应的值
                String[] vals = map.get(name);
                System.out.println(name);
                for(String val : vals) {
                    System.out.println(val);
                }
            }
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }
    

     

     

     

     

     

    展开全文
  • URIEncoding只影响get方式请求时URI的编码,不影响请求和响应体的编码。默认请求和响应体的编码还为iso-8859-1 假如从客户端以get方式传来一个username参数。 Tomcat Version &lt; 8.0 的处理方式: String ...
  • Servlet的中文乱码有两种情况。 一、请求。使用POST方式请求时获取参数乱码,如下图所示: 二、响应响应的乱码有两种:一是服务器乱码,二是客户端浏览器乱码。以下为谷歌浏览器展示的乱码形式: 【解决...
  • jsp和servlet请求响应

    2018-11-25 08:35:20
    jsp和servlet请求响应,jsp和servlet请求响应
  • Servlet请求响应中文乱码问题

    千次阅读 2019-03-09 18:25:43
    解决Servlet请求和响应的中文乱码 请求参数的中文乱码问题 post方式 setCharacterEncoding() 该方法只对post请求方式有效,get请求方式无效 HttpServletRequest接口提供了一个setCharacterEncoding()方法,该...
  • Servlet请求和响应

    2017-06-05 20:40:44
    Servlet请求响应
  • 13. Servlet 请求/响应过滤器

    千次阅读 2017-07-26 14:47:51
    Servlet 请求/响应过滤器1、Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息;可以将一个或多个 Servlet 过滤器附加到一个 Servlet (或一组 Servlet),或者 JSP 、 HTML 页面,...
  • Servlet请求和响应

    2021-03-08 09:48:37
    1、Servlet最主要的作用就是处理客户端请求,并向客户端做出响应。 针对Servlet的每次请求,Web服务器在...request对象response对象在请求Servlet过程中至关重要。 2、HttpServletResponse接口 (1)HttpServletRe
  • Servlet处理请求和响应

    千次阅读 2016-10-14 22:37:30
    Servlet处理请求的流程:  1) 客户端在浏览器的地址栏中输入一个请求的URL,按回车后就向服务器端发起一个http request(由浏览器生成)。  2) 服务器端的Web Server首先接受到请求,并将请求转交给容器,容器会根据...
  • 通过前面的学习能够创建并运行一个简单的 Servlet程序,完成浏览器服务器的简单交互,但是我们编写的Servlet 代码是没有对浏览器的请求进行处理的。现在开始学习如何使用 Servlet 进行浏览器请求的处理。 Request...
  • 请求和响应1.1 HttpServletRequest1.1.1 HttpServletRequest介绍1.1.2 HttpServletRequest常用方法1.1.3 Tomcat乱码问题1.2 HttpServletResponse1.2.1 介绍1.2.2 HttpServletResponse常用方法2. 转发和重定向2.1 ...
  • servlet请求和响应

    千次阅读 2017-02-17 21:42:05
    2、含义:Response代表响应响应消息中的状态码、响应头、实体内容都可以由它进行操作。 3、Response的使用: (1)输出数据 [html] view plain copy public class Ou
  • 学习了servlet的request对象response对象
  • Servlet+JSP(八):Servlet请求和响应处理 通过前面的学习我们能够创建并运行一个简单的Servlet 程序,完成浏览器和服务器的简单交互,但是我们编写的 Servlet代码是没有对浏览器的请求进行处理的。现在我们开始...
  •  1.1、理解编码解码  编码:将我们看的懂得语言转换成计算机看的懂得语言,如计算机只认识英文,则可以利用码表将我们的中文编码为英文  解码:将计算机看得懂的语言转换为我们看得懂的语言  码表:一种...
  • servlet是一种实现了servlet接口的类,它是由Web容器负责创建并使用,用于接收和响应用户的请求servlet中有五个抽象方法。 Servlet public class DemoServlet implements Servlet { @Override public void init...
  • Servlet请求响应包装类

    2018-05-13 16:48:01
    HttpServletRequest类中没有提供对请求信息进行修改的方法,HttpServletResponse类中也没有提供得到响应数据的方法,虽然过滤器可以截取到请求和响应对象但无法直接改变他们的状态,可以通过请求和响应的包装类...
  • 一般在Servlet输出纯文本时,通常会用ServletResponse对象的getWriter方法返回一个PrintWriter对象,然后利用这个对象把文本输出到客户端。       PrintWriter对象输出默认使用ISO-8
  • HTTP响应和HTTP请求的头格式为: 初始状态行 + 回车换行符(回车+换行)零个或多个标题行+回车换行符一个空白行,即回车换行符一个可选的消息主体,比如文件、查询数据或查询输出

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,362
精华内容 3,344
关键字:

servlet请求和响应