码迷,mamicode.com
首页 > 编程语言 > 详细

java学习笔记—HttpServletResponse(23)

时间:2015-04-06 18:34:35      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

获取客户端信息

1 编写ClientServlet.java

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 获取客户端信息
out.println("getMethod(): "+request.getMethod()+"<br/>");
out.println("getRequestURL(): "+request.getRequestURL()+"<br/>");
out.println("getRequestURI(): "+request.getRequestURI()+"<br/>");
out.println("getProtocol(): "+request.getProtocol()+"<br/>");
out.println("getQueryString(): "+request.getQueryString()+"<br/>");
out.println("getRemoteAddr(): "+request.getRemoteAddr()+"<br/>");
out.println("getRemoteHost(): "+request.getRemoteHost()+"<br/>");
out.println("getRemotePort(): "+request.getRemotePort()+"<br/>");
out.println("getServletPath(): "+request.getServletPath()+"<br/>");
out.println("getContextPath(): "+request.getContextPath()+"<br/>");
}

以上的方法可以发现通过使用request可以获取servlet和servletContext的路径。那么在实际的开发中我们的网站的名字一般都需要进行改变。因此以后在web项目中如果使用到网站名那么一定要使用request.getContextPath()获取出来而不是写死。这样可以提高后期的维护性。

2 获取服务器信息

编写一个GetServerInfo.java

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
// 获取客户端信息
out.println("getLocalAddr(): " + request.getLocalAddr() + "<br/>");
out.println("getLocalName(): " + request.getLocalName() + "<br/>");
out.println("getLocalPort(): " + request.getLocalPort() + "<br/>");
}

3 请求转发

  1. 访问路径

http://localhost:8080/demo1?name=jack&password=root

实现一个处理用户请求的Demo1Servlet

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        // 获取用户的请求的参数
        String name = request.getParameter("name");
        String psw = request.getParameter("password");
        // 判断用户输入的信息
        if(name != null && psw != null && "jack".equals(name) 
&& "root".equals(psw)){
            // 登陆成功需要将用户信息传递给欢迎页面
            request.setAttribute("name", name);
            // 登陆成功将页面转发到欢迎页面
            request.getRequestDispatcher("/demo2")
.forward(request, response);
        }else{
         request.getRequestDispatcher("/regist.html")
.forward(request, response);
        }
}

  2. 编写一个转发后的Demo2Servlet

public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        response.setCharacterEncoding("utf-8");
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        // 获取转发过来的数据
        String name = (String) request.getAttribute("name");
        out.println("欢迎光临:"+name);
    }

 转发和重定向的区别

1.    实现方式不同
转发  request.getRequestDispatcher("/regist.html").forward(request, response);
重定向 response.sendRedirect(“/day07/regist.html”)
2.    请求次数不同
转发只发送一次请求
重定向发送2次请求
3.    地址栏变化不同
转发地址栏不变
重定向地址栏变化
4. 转发的时候可以通过request对象携带数据。

Web中路径问题

如果在web项目中需要使用路径,如:转发、重定向还有超链接等。

原则:”一切web路径以/开始”

那么/的路径一定是相对路径,那么/到底代表哪一个相对路径是需要智慧的。

如果该路径是给服务器使用的,那么/代表当前网站的根目录。
如果该路径是给浏览器使用的,那么/代表当前Tomcat的webapps目录。

 

java学习笔记—HttpServletResponse(23)

标签:

原文地址:http://www.cnblogs.com/zhenghongxin/p/4396306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!