转发与重定向学习代码

html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>用户登录</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <form action="/day07/LoginServlet" method="post">
        <table border="1" align="center">
            <caption>用户登录</caption>
            <tr>
                <th>用户名</th>
                <td><input type="text" name="username"/></td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <input type="submit" value="提交"/>
                        ????
                    <input type="reset" value="重填"/>
                </td>
            </tr>
        </table>
    </form>
  </body>
</html>

java

LoginServlet

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.itcast.web.domain.IpCheckBean;

public class LoginServlet extends HttpServlet {
    //key为IP,value为归属地
    private Map<String,String> map = new HashMap<String,String>();
    public void init() throws ServletException {
        //在用户第一次访问前加载IP和归属地,不存在多线程安全问题
        map.put("192.168.12.222","北京");
        map.put("192.168.11.122","上海");
        map.put("192.168.11.50","深圳");
        map.put("192.168.11.33","佛山");
        map.put("192.168.11.44","珠海");
        map.put("127.0.0.1","北京");
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        //IP
        String ip = request.getRemoteAddr();
        IpCheckBean ipCheckBean = new IpCheckBean();
        //归属地
        String address = ipCheckBean.check(ip,map);
        //用户名
        String username = request.getParameter("username");
        //将信息绑定到ServletContext对象中
        ServletContext context = this.getServletContext();
        context.setAttribute("username",username);
        context.setAttribute("ip",ip);
        context.setAttribute("address",address);
        /*转发到ShowServlet
        context
            .getRequestDispatcher("/ShowServlet")
            .forward(request,response);
        */
        //重定向到ShowServlet  是走get方法
        response.sendRedirect("/day07/ShowServlet");
    }
}

ShowServlet

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ShowServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        ServletContext context = this.getServletContext();
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter pw = response.getWriter();
        pw.write("欢迎:"+context.getAttribute("username")+"光临<br/>");
        pw.write("你的IP是:"+context.getAttribute("ip")+"<br/>");
        pw.write("归属地:"+context.getAttribute("address")+"<br/>");
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        this.doPost(request,response);
    }
}

ListServlet

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;

public class ListServlet extends HttpServlet {
    public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        String username = (String) request.getAttribute("USERNAME");
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("欢迎"+username+"光临");
    }
    public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        String username = (String) request.getAttribute("USERNAME");
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("欢迎"+username+"光临");
    }
}

原文地址:http://blog.51cto.com/357712148/2104872

时间: 2024-10-22 20:37:52

转发与重定向学习代码的相关文章

学习笔记(三)GenericServlet HttpServlet 转发和重定向 JSP及隐含对象 域对象

7. MVC 设计模式. 6. 和属性相关的方法: 1). 方法 void setAttribute(String name, Object o): 设置属性  Object getAttribute(String name): 获取指定的属性 Enumeration getAttributeNames(): 获取所有的属性的名字组成的 Enumeration 对象removeAttribute(String name): 移除指定的属性 2). pageContext, request, se

#HTTP协议学习# (十二)理解转发与重定向

本文转自:http://blog.csdn.net/meiyalei/article/details/2129120  生动清晰 解释一 转发是服务器行为,重定向是客户端行为.为什么这样说呢,这就要看两个动作的工作流程: 转发过程:客户浏览器发送http请求---->web服务器接受此请求-->调用内部的一个方法在容器内部完成请求处理和转发动作---->将目标资源发送给客户:在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的r

JavaWeb学习之转发和重定向、会话技术:cookie、session、验证码实例、URLConnection使用(下载网页)(4)

1.转发和重定向 HttpServletResponse response 转发: RequestDispatcher dispatcher = request.getRequestDispatcher("/secondServlet"); request.setAttribute("pwd","123");//这里设置的值在secondServlet中可以获取到 dispatcher.forward(request, response);//调

Java中转发VS重定向

转发和重定向是何方圣神?在之前只知道它就是解决页面跳转问题的,通过对drp的一步步学习,对它们的应用也越来越多.这时又给自己带来了更多的疑问?它到的是什么?怎么用?它又和asp.net中的页面跳转有什么区别?接下来先对它们两进行下系统的学习吧! 一.是什么? 转发:服务器接收到客户端的请求之后,服务器把控制权交到另一个JSP页面手里,新的JSP页面接收到请求之后根据情况是继续转交控制权或者显示页面由自己决定,到最后显示页面的整个过程就是一个页面跳转过程,在这个过程中,服务器可以把请求的数据在经过

jsp初识、servlet转发、转发与重定向的比较

jsp sun公司制定的一种服务器端动态页面技术规范 生成动态页面 jsp其实是一个以.jsp为后缀的文件,该文件的内容主要是html和少量的java代码 容器会将jsp文件自动转换成一个servlet然后执行. 如何写一个jsp文件 1.创建一个以.jsp为后缀的文件 2.在文件里面添加如下的内容: (1)html(css,js):直接写.不用写out.print (2)java代码: a.java代码片段 <% java语句: %> b.jsp表达式 <%= java表达式%>

关于请求转发、重定向、url重写

1.先来记录一个web.xml中servlet的问题,java网站本质是servlet,在web.xml中配置servlet的映射规则. 发送url请求->服务器接受->servlet处理->返回处理结果 servlet的url-pattern要以/开头 2.在学习javaWeb时了解到了转发和重定向.

SpringMVC转发和重定向区别!

在servlet中,转发和重定向是由request和response完成的.两者之间的区别请看我之前的文章.那么在springMVC中是如何完成的呢? /**转发**/ @RequestMapping("/login.do") public String login(HttpServletRequest request,HttpServletResponse response){ request.setAttribute("message", "hello

javaEE:day2-Http头协议(doget/dopost)、转发与重定向、gzip压缩

http头协议 凡是以超链接登录的都是doget,表单请求可以设置请求头协议:doget.dopost doget请求,可以直接用url带参数访问页面文件,如:http://127.0.0.1:8080/helloWeb_jun/login.jsp?name=aaa&pwd=123123123 而如果在表单中设置了method="post"的话则不能用上面的方式访问,必须是通过超链接点击访问. 浏览器的兼容: 我们要设置response.setContentType();用来设

定向转发和重定向实现 &lt;select &gt;下拉表单数据传送

定向转发的特点:   (1). 实行转发时浏览器上的网址不变  (如果你这点忽视了,那你就要接受我无尽的鄙视吧! 哇咔咔~~~)    (2). 实行转发时 :   只有一次请求.  不信,看这下面的图:   (俗话说,没图说个jb)  (3).  定向转发的网址必须是本站点的网址.    (因为它不消除,消除数据) (4)  定向转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起. 实现的两个API: 1 RequestDispatcher rd 2 = request.