Javaweb——IDEA案例之Request对象API

Javaweb——IDEA案例之Request对象API

第五次上机:
Request对象API:
1、服务器向浏览器发送一个响应码404
2、服务器通知浏览器跳转到百度网站
3、服务器通知浏览器跳转到网站内部面页success.html
3、服务器向浏览器响应“欢迎来到servlet世界”
4、获取浏览器请求的方式
5、获取web请求的url
6、获取web请求的uri
7、获取web请求的查询字符串:username=tom&userpwd=123
8、获取web应用的根目录
9、获取服务器的ip地址
10、获取web请求的远程地址及端口号即浏览器所在主机的IP和PORT

请求转发:
1、新建一个登录面页,要求至少包含用户名称和用户密码
2、新建一个Servlet处理登录请求("/login"),当用户名称和密码分别为’admin’和’1234’时,表示登录成功,并将用户称保存到请求域中,然后将此请求转发到另一个Servlet中("/servlet02"),当登录失败时重定向到error.html面页 并点一个链接跳转到登录页面
3、在第二个Servlet中读取用户的登录名称并将其打印到浏览器

CookieServlet01

package xyc.sjxy.sesrvlet;
//代码齐全
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/c01")//映射路径
public class CookieServlet01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");
        //创建一个cookie
        Cookie userName=new Cookie("username","tom");
        Cookie uesrpwd=new Cookie("uesrpwd","123");
        //cookie=javax,servlet.http.Cookie@6ae292a1
        //Object类的toString方法
        //System.out.println("cookie = " + cookie);
        //将cookie信息发送到浏览器端    以响应头的形式:Set-Cookie:username=tom
        resp.addCookie(userName);//默认服务器发送给浏览器的cookie信息是存放在浏览器的进程中(内存中)所以只能临时保存   一旦关闭cookie就没有了
        resp.addCookie(uesrpwd);//如果要永久保存cookie的话,必须要把cookie存入到浏览器端的硬盘中   要实现这个功能   cookie要设置一个属性MaxAge
        //这个属性的默认值是-1 (代表存放在内存里)    用户只需设置一个正数即可   如果设置为0 代表删除cookie
        //当浏览器以后继续请求这个servlet时    它将前面保存的cookie信息以请求头的形式回送给服务器:Cookie:username=tom;userpwd=123;

        //获取cookie信息
        Cookie[] cookies=req.getCookies();
        if(cookies!=null){
            for(Cookie cookie:cookies){
                String name=cookie.getName();//key
                String value=cookie.getValue();//value
                System.out.println(name+" = " + name);
                resp.getWriter().println(name+"="+value);
            }
        }
        else{
            resp.getWriter().println("没有cookie信息");
        }


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

CookieServlet02

package xyc.sjxy.sesrvlet;
//代码齐全
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/c02")//映射路径
public class CookieServlet02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");
        //创建一个cookie
        Cookie userName=new Cookie("username","tom");
        Cookie uesrpwd=new Cookie("uesrpwd","123");
        //cookie=javax,servlet.http.Cookie@6ae292a1
        //Object类的toString方法
        //System.out.println("cookie = " + cookie);
        //将cookie信息发送到浏览器端    以响应头的形式:Set-Cookie:username=tom

        userName.setMaxAge(60);//这个值是以秒为单位
        resp.addCookie(userName);//默认服务器发送给浏览器的cookie信息是存放在浏览器的进程中(内存中)所以只能临时保存   一旦关闭cookie就没有了
        resp.addCookie(uesrpwd);//如果要永久保存cookie的话,必须要把cookie存入到浏览器端的硬盘中   要实现这个功能   cookie要设置一个属性MaxAge
        //这个属性的默认值是-1 (代表存放在内存里)    用户只需设置一个正数即可   如果设置为0 代表删除cookie
        //当浏览器以后继续请求这个servlet时    它将前面保存的cookie信息以请求头的形式回送给服务器:Cookie:username=tom;userpwd=123;

        //获取cookie信息
        Cookie[] cookies=req.getCookies();
        if(cookies!=null){
            for(Cookie cookie:cookies){
                String name=cookie.getName();//key
                String value=cookie.getValue();//value
                System.out.println(name+" = " + name);
                resp.getWriter().println(name+"="+value);
            }
        }
        else{
            resp.getWriter().println("没有cookie信息");
        }


    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

CookieAccess

package xyc.sjxy.sesrvlet;
//代码全了
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/d")
public class CookieAccess extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter out=resp.getWriter();
        //显示用户上次访问本网站的日期
        //读取cookie信息
        Cookie[] cookies=req.getCookies();
        boolean isFirst=true;
        Cookie accessTime=null;
        if(cookies!=null){
            for(Cookie cookie:cookies){
                if(cookie.getName().contains("access")){
                  isFirst=false; //这不是第一次访问
                    accessTime=cookie;
                    break;

                }

            }

        }else{
            isFirst=true;
            //这是第一次访问本网站   将当前的访问时间记录到cookie里  且永久保存在硬盘里
        }
        if(isFirst){
//第一次访问

            Date date = new Date();
            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String  format=sd.format(date);//格式化以后的时间

            format=URLEncoder.encode(format,String.valueOf(StandardCharsets.UTF_8));
//            //由于cookie中不能包含特殊字符  如空格等  所以要编码
            Cookie access = new Cookie("access", format);
           access.setMaxAge(3*60);// 保存三分钟
           resp.addCookie(access);// 将访问存到浏览器
            out.println("你是第一次来到本网站");
        }else{
            //不是第一次访问
            //说明用户以前访问过
            //读取cookie并显示在页面上
            String value =accessTime.getValue();
            //由于cookie编码过了   这次要解码
            value= URLDecoder.decode(value,String.valueOf(StandardCharsets.UTF_8));
            out.println("上次访问时间为:"+value);
            //更新cookie  将当前的访问时间写回cookie
            Date date = new Date();
            SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String  format=sd.format(date);//格式化以后的时间
            format=URLEncoder.encode(format,String.valueOf(StandardCharsets.UTF_8));
            accessTime.setValue(format);//更新cookie的值
            //重新发给浏览器
            accessTime.setMaxAge(3*60);
            resp.addCookie(accessTime);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

遇到的严重问题

在运行时出现
“已与服务器断开连接”
原因
tomcat的两个jar包没配置进去

解决方案

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
添加jar包即可

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值