Day48 Servlet-3 Cookie对象和Session对象

本文讲解了请求编码的设置方法,包括GET和POST请求的处理方式,并详细介绍了Cookie的使用,如创建、设置有效期和路径等。同时,还探讨了Cookie与Session的区别,以及如何在实际项目中应用这些技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请求编码和Cookie学习

请求编码格式学习
post请求方式:
            在service中使用req.setCharacterEncoding("utf-8")即可
        get请求方式:
            1 在service中使用req.setCharacterEncoding("utf-8")
            2 在tomcat的server.xml中配置
                  <Connector port="8080" protocol="HTTP/1.1"
                               connectionTimeout="20000"
                              redirectPort="8443"  useBodyEncodingForURI="true"/>
    Servlet处理请求数据流程总结:
            //设置请求编码格式
            //设置响应编码格式
            //获取请求信息
            //处理请求信息
            //响应处理结果
                //直接响应
                //请求转发
                //重定向
Cookie学习
问题:
        不同的请求有可能使用相同的用户数据,这样就造成用户每次发请求都要讲相同数据输入一遍。
    解决:
        使用cookie
    特点:
        cookie是浏览器端的数据存储技术
    使用:
        1 在servlet中确定哪些数据是要共享的数据
        2 创建Cookie对象存储请求要共享的数据
            注意:一个Cookie对象只能存储一条共享数据。
        3 设置响应
            默认方式:
                cookie只有在当次浏览内有效(浏览器不关闭会一直有效,关闭浏览器则销毁,存储在浏览器的内存中)
                只有在当前项目下的路径才会附带cookie信息
            自定义方式:
                设置Cookie有效期:
                    cookie对象.setMaxAge(秒为单位的整数时间);
                    例如:c2.setMaxAge(3600*24*3);
                    注意:设置了有效期的Cookie是存储在客户端的硬盘的,到期后会自动销毁。
                设置Cookie的访问路径:
                    指定cookie附带的路径
                    Cookie对象.setPath(String uri);
           4 获取Cookie信息
                使用request对象进行获取
                    Cookie[] cks=req.getCookies()//返回cookie数组
                    注意:在遍历之前需要先判断Cookie是否为null,不为null才能遍历。
                    cookie对象.getName()//返回键名
                    cookie对象.getValue()//返回值
        总结:
            Cookie其实是浏览器端的一门存储技术,解决了不同请求数据共享的问题。

session学习

Session学习:
    问题:
        不同的请求在后台处理时有可能会使用相同的数据
    解决:
        使用Session技术
    特点:
        session是一门服务器端的数据存储技术。
    使用:
        1 获取或者创建Session对象
            HttpSession hs=req.getSession()
            注意: 
                如果请求中有sessionID则返回其对应的session对象。
                如果请求中没有sessionID则创建一个session对象,并将sessionID自动使用cookie技术存到浏览器端。
        2 存储数据和获取数据
            hs.setAttribute(String key,Object obj);//存储数据
            hs.getAttribuet(String key)//获取数据,返回的是Object类型,需要强转。
        3 设置session
            设置session有效期:
                hs.setMaxInactiveInterval(时间整数,单位秒);
            session强制失效:
                     hs.invalidate();
    总结:
        session的作用域:
                一次会话内有效
    总结Servlet的使用
        第一:
            创建并运行一个servlet:
                    创建一个继承了HTTPServlet的java类,覆写service方法
                    配置web.xml
                    部署项目到服务器,启动并在浏览器中输入地址调用即可
        第二:
            使用servlet处理用户请求:
                    设置请求编码格式
                    设置响应编码格式
                    获取请求信息
                        获取用户请求信息
                        获取cookie信息(可能)
                    处理请求
                        处理用户请求数据
                        获取session数据(可能)
                        处理session数据(可能)
                    响应处理结果
                        创建并发送cookie到客户端(可能)
                        将数据存储到session中(可能)

                        直接响应
                        请求转发
                        重定向

ServletConfig对象和ServletContext对象学习

ServletConfig对象学习:
        作用:
            获取servlet在web.xml中配置的初始化参数
        使用:
            1 在web.xml中配置servlet的初始化参数,例如:
            <servlet>
    <servlet-name>TestServletConifg</servlet-name>
    <servlet-class>com.bjsxt.servlet.TestServletConifg</servlet-class>
    <!--配置servlet的初始化数据(局部)  -->
    <init-param>
        <param-name>flag</param-name>
        <param-value>false</param-value>
    </init-param>
     <init-param>
        <param-name>uname</param-name>
        <param-value>zhangsan</param-value>
    </init-param>
             </servlet>
            2 在servlet中使用覆写init(ServletConfig sc)的方法
               在此方法中使用sc对象获取配置信息即可
                sc.getInitParameter("键名"),例如:sc.getInitParameter("flag")
ServletContext对象:

        request解决问题:一次请求内的数据共享问题
        session解决问题:一个用户的不同请求的数据共享问题

        新的问题:
            不同用户的数据共享怎么办?       
        特点:
            ServletContext对象伴随项目的运行由服务器自动给项目创建的对象。一个项目有且只有一个。
        作用:
            1 可以让不同的用户共享相同的数据
            2 获取web.xml中配置的全局初始化数据
            3 动态获取项目资源的绝对路径
        使用:
            1创建ServletContext对象
                ServletContext sc=this.getServletConfig().getServletContext();
                ServletContext sc2=this.getServletContext();
                ServletContext sc3=req.getSession().getServletContext();
            2 操作
                存储和获取作用域数据
                    sc.setAttribute("str", "6666");//存
                    sc.getAttribute("str");//取
                获取web.xml中的数据
                    sc.getInitParameter("键名")
                动态获取项目资源的绝对路径
                    String path=sc.getRealPath("资源名(资源默认从src下进行查找)");

小案例

实现3天免登录,和欢迎XXX登录功能
项目名2018-3-8-loginServlet
src文件夹:
com.bjsxt.dao:
UserDao.java:

package com.bjsxt.dao;

import java.util.ArrayList;

import com.bjsxt.pojo.User;

public interface UserDao {
    //验证登录
  User checkUserInfo(String uname,String upwd);
  //查询cookie
  User checkUserInfoByCookie(String uid);
  //查询所有用户信息
  ArrayList<User> selAllInfo();

}

com.bjsxt.daoImpl:
UserDaoImpl.java:

package com.bjsxt.daoImpl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.bjsxt.dao.UserDao;
import com.bjsxt.pojo.User;

public class UserDaoImpl implements UserDao{
   //验证登录
    @Override
    public User checkUserInfo(String uname, String upwd) {
        //声明JDBC变量
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        User u=null;
        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //创建数据库连接对象
            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","root");
            //创建SQL命令
            String sql="select * from t_user where uname=? and upwd=?";
            //创建SQL命令对象
            ps=conn.prepareStatement(sql);
            //给占位符赋值
            ps.setString(1,uname);
            ps.setString(2,upwd);
            //执行SQL命令
            rs=ps.executeQuery();
            //遍历查询结果
            while(rs.next()){
                u=new User();
                u.setUid(rs.getInt("uid"));
                u.setUname(rs.getString("uname"));
                u.setUpwd(rs.getString("upwd"));
                u.setUphone(rs.getString("uphone"));
                u.setRid(rs.getInt("rid"));
            }       
            //返回结果
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            //关闭资源
            if(rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
            return u;
    }

    @Override
    public User checkUserInfoByCookie(String uid) {
        //声明JDBC变量
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet rs=null;
        User u=null;
        try {
            //加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //创建数据库连接对象
            conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","root");
            //创建SQL命令
            String sql="select * from t_user where uid=?";
            //创建SQL命令对象
            ps=conn.prepareStatement(sql);
            //给占位符赋值
            ps.setString(1,uid);
            //执行SQL命令
            rs=ps.executeQuery();
            //遍历查询结果
            while(rs.next()){
                u=new User();
                u.setUid(rs.getInt("uid"));
                u.setUname(rs.getString("uname"));
                u.setUpwd(rs.getString("upwd"));
                u.setUphone(rs.getString("uphone"));
                u.setRid(rs.getInt("rid"));
            }       
            //返回结果
        } catch (Exception e) {
            // TODO: handle exception
        }finally{
            //关闭资源
            if(rs!=null){
                try {
                    rs.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(ps!=null){
                try {
                    ps.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if(conn!=null){
                try {
                    conn.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
            return u;
    }

    @Override
    public ArrayList<User> selAllInfo() {
        //声明JDBC变量
                Connection conn=null;
                PreparedStatement ps=null;
                ResultSet rs=null;
                User u=null;
                ArrayList<User> list=null;
                try {
                    //加载驱动
                    Class.forName("com.mysql.jdbc.Driver");
                    //创建数据库连接对象
                    conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","root");
                    //创建SQL命令
                    String sql="select * from t_user";
                    //创建SQL命令对象
                    ps=conn.prepareStatement(sql);
                    //给占位符赋值

                    //执行SQL命令
                    rs=ps.executeQuery();
                    list=new ArrayList<User>();
                    //遍历查询结果
                    while(rs.next()){
                        u=new User();
                        u.setUid(rs.getInt("uid"));
                        u.setUname(rs.getString("uname"));
                        u.setUpwd(rs.getString("upwd"));
                        u.setUphone(rs.getString("uphone"));
                        u.setRid(rs.getInt("rid"));
                        list.add(u);
                    }       
                    //返回结果
                } catch (Exception e) {
                    // TODO: handle exception
                }finally{
                    //关闭资源
                    if(rs!=null){
                        try {
                            rs.close();
                        } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    if(ps!=null){
                        try {
                            ps.close();
                        } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    if(conn!=null){
                        try {
                            conn.close();
                        } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
                    return list;
            }

}

com.bjsxt.pojo:
User.java:

package com.bjsxt.pojo;

public class User {
   private int uid;
   private String uname;
   private String upwd;
   private String uphone;
   private int rid;
public User() {
    super();
    // TODO Auto-generated constructor stub
}
public User(int uid, String uname, String upwd, String uphone, int rid) {
    super();
    this.uid = uid;
    this.uname = uname;
    this.upwd = upwd;
    this.uphone = uphone;
    this.rid = rid;
}
@Override
public String toString() {
    return "User [uid=" + uid + ", uname=" + uname + ", upwd=" + upwd
            + ", uphone=" + uphone + ", rid=" + rid + "]";
}
@Override
public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + rid;
    result = prime * result + uid;
    result = prime * result + ((uname == null) ? 0 : uname.hashCode());
    result = prime * result + ((uphone == null) ? 0 : uphone.hashCode());
    result = prime * result + ((upwd == null) ? 0 : upwd.hashCode());
    return result;
}
@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    User other = (User) obj;
    if (rid != other.rid)
        return false;
    if (uid != other.uid)
        return false;
    if (uname == null) {
        if (other.uname != null)
            return false;
    } else if (!uname.equals(other.uname))
        return false;
    if (uphone == null) {
        if (other.uphone != null)
            return false;
    } else if (!uphone.equals(other.uphone))
        return false;
    if (upwd == null) {
        if (other.upwd != null)
            return false;
    } else if (!upwd.equals(other.upwd))
        return false;
    return true;
}
public int getUid() {
    return uid;
}
public void setUid(int uid) {
    this.uid = uid;
}
public String getUname() {
    return uname;
}
public void setUname(String uname) {
    this.uname = uname;
}
public String getUpwd() {
    return upwd;
}
public void setUpwd(String upwd) {
    this.upwd = upwd;
}
public String getUphone() {
    return uphone;
}
public void setUphone(String uphone) {
    this.uphone = uphone;
}
public int getRid() {
    return rid;
}
public void setRid(int rid) {
    this.rid = rid;
}

}

com.bjsxt.service:
UserService.java:

package com.bjsxt.service;

import java.util.ArrayList;

import com.bjsxt.pojo.User;

public interface UserService {
    //验证登录
  User checkUserInfoService(String uname,String upwd);
    //查询cookie
  User  checkUserInfoByCookieService(String uid);
  //查询所有用户信息
  ArrayList<User> selAllInfoService();
}

com.bjsxt.serviceImpl:
UserServiceImpl.java:

package com.bjsxt.serviceImpl;

import java.util.ArrayList;

import com.bjsxt.dao.UserDao;
import com.bjsxt.daoImpl.UserDaoImpl;
import com.bjsxt.pojo.User;
import com.bjsxt.service.UserService;

public class UserServiceImpl implements UserService{
    //声明数据库层对象
    UserDao u=new UserDaoImpl();
    //验证登录
    @Override
    public User checkUserInfoService(String uname, String upwd) {
        return u.checkUserInfo(uname, upwd);
    }
    @Override
    public User checkUserInfoByCookieService(String uid) {
        return u.checkUserInfoByCookie(uid);
    }
    @Override
    public ArrayList<User> selAllInfoService() {
        return u.selAllInfo();
    }

}

com.bjsxt.servlet:
CookieServlet.java:

package com.bjsxt.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.bjsxt.pojo.User;
import com.bjsxt.serviceImpl.UserServiceImpl;

public class CookieServlet extends HttpServlet {
  @Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
      //设置请求编码格式
       req.setCharacterEncoding("utf-8");
      //设置响应编码格式
    resp.setCharacterEncoding("utf-8");
    resp.setContentType("text/html;charset=utf-8");
    //接收cookie
    Cookie[] cs=req.getCookies();
    //遍历数组并找到uid
     if(cs!=null){
         for(Cookie c:cs){
             String uid="";
                if("uid".equals(c.getName())){
                    uid=c.getValue();
                }
                  //查询数据库
                UserServiceImpl  us=new UserServiceImpl();
                User u=us.checkUserInfoByCookieService(uid);
                if(u!=null){
                    //将用户数据存储到session中
                    HttpSession hs=req.getSession();
                    hs.setAttribute("user", u);
                    //重定向
                    resp.sendRedirect("main");
                }
            }
    }else{
        //请求转发
        req.getRequestDispatcher("login").forward(req, resp);
    }

}
} 

LoginServlet.java:

package com.bjsxt.servlet;

import java.io.IOException;

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

public class LoginServlet extends HttpServlet {
   @Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
       //设置请求编码格式
       req.setCharacterEncoding("utf-8");
       //设置响应编码格式
       resp.setCharacterEncoding("utf-8");
       resp.setContentType("text/html;charset=utf-8");
       //画主页面
        //响应页面
        resp.getWriter().write("<html>");
        resp.getWriter().write("<head>");
        resp.getWriter().write("<title>登录页面</title>");
        resp.getWriter().write("<meta charset='utf-8'/>");
        resp.getWriter().write("</head>");
        resp.getWriter().write("<body>");
        resp.getWriter().write("<font color='red' size='15'>");
        resp.getWriter().write(req.getAttribute("str")!=null?(String)req.getAttribute("str"):"");
        resp.getWriter().write("</font>");
        resp.getWriter().write("<form action='user' method='get'>");
        resp.getWriter().write("用户名: <input type='text' name='uname' value=''/><br />");
        resp.getWriter().write("密码: <input type='password' name='pwd' value=''/><br />");
        resp.getWriter().write(" <input type='submit'  value='登录'/><br />");
        resp.getWriter().write("</form>");
        resp.getWriter().write("</body>");
        resp.getWriter().write("</html>");
        resp.getWriter().write("</html>");
}
}

MainServlet.java:

package com.bjsxt.servlet;

import java.io.IOException;

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

import com.bjsxt.pojo.User;

public class MainServlet extends HttpServlet {
   @Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
        //设置响应编码格式
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().write("<html>");
        resp.getWriter().write("<head>");
        resp.getWriter().write("<title>登录页面</title>");
        resp.getWriter().write("<meta charset='utf-8'/>");
        resp.getWriter().write("</head>");
        resp.getWriter().write("<body>");
        resp.getWriter().write("<h3>欢迎访问506机场</h3>");
        resp.getWriter().write("<hr />");
        resp.getWriter().write("<font>"+((User)req.getSession().getAttribute("user")).getUname()+"</font>");
        resp.getWriter().write("<a href='show'>点击查看所有的用户信息</a>");
        resp.getWriter().write("</body>");
        resp.getWriter().write("</html>");
}
}

ShowServlet.java:

package com.bjsxt.servlet;

import java.io.IOException;
import java.util.ArrayList;

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

import com.bjsxt.pojo.User;
import com.bjsxt.serviceImpl.UserServiceImpl;

public class ShowServlet extends HttpServlet {
  @Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    //设置请求编码格式
            req.setCharacterEncoding("utf-8");
            //设置响应编码格式
            resp.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
           //处理请求
             //创建Service对象
             UserServiceImpl  us=new UserServiceImpl();
             ArrayList<User> list=us.selAllInfoService();

             //处理响应结果
             req.setAttribute("list", list);
             //请求转发
             req.getRequestDispatcher("show2").forward(req, resp);
}
}

ShowServlet2.java:

package com.bjsxt.servlet;

import java.io.IOException;
import java.util.ArrayList;

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

import com.bjsxt.pojo.User;

public class ShowServlet2 extends HttpServlet {
  @Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
    //设置请求编码格式
            req.setCharacterEncoding("utf-8");
            //设置响应编码格式
            resp.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
            //获取结果集合
            ArrayList<User> list=(ArrayList<User>) req.getAttribute("list");
            //响应页面
            resp.getWriter().write("<html>");
            resp.getWriter().write("<head>");
            resp.getWriter().write("<title>登录页面</title>");
            resp.getWriter().write("<meta charset='utf-8'/>");
            resp.getWriter().write("</head>");
            resp.getWriter().write("<body>");
            resp.getWriter().write("<table border='1px'>");
            resp.getWriter().write("<tr>");
            resp.getWriter().write("<td>用户ID</td>");
            resp.getWriter().write("<td>用户名</td>");
            resp.getWriter().write("<td>用户密码</td>");
            resp.getWriter().write("<td>用户手机号</td>");
            resp.getWriter().write("<td>用户权限</td>");
            resp.getWriter().write("</tr>");
            for(int i=0;i<list.size();i++){
                resp.getWriter().write("<tr>");
                resp.getWriter().write("<td>"+list.get(i).getUid()+"</td>");
                resp.getWriter().write("<td>"+list.get(i).getUname()+"</td>");
                resp.getWriter().write("<td>"+list.get(i).getUpwd()+"</td>");
                resp.getWriter().write("<td>"+list.get(i).getUphone()+"</td>");
                resp.getWriter().write("<td>"+list.get(i).getRid()+"</td>");
                resp.getWriter().write("</tr>");
            }
            resp.getWriter().write("</table>");
            resp.getWriter().write("</body>");
            resp.getWriter().write("</html>");
}
}

UserServlet.java:

package com.bjsxt.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.bjsxt.pojo.User;
import com.bjsxt.service.UserService;
import com.bjsxt.serviceImpl.UserServiceImpl;

public class UserServlet extends HttpServlet {
   @Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException, IOException {
     //设置请求编码格式
       req.setCharacterEncoding("utf-8");
      //设置响应编码格式
     resp.setCharacterEncoding("utf-8");
     resp.setContentType("text/html;charset=utf-8");
     //获取用户数据
     String uname=req.getParameter("uname");
     String upwd=req.getParameter("pwd");
     //查询数据库验证登录
        //声明业务层对象
     UserServiceImpl us=new UserServiceImpl();
        User u= us.checkUserInfoService(uname, upwd);
        //处理用户数据
     if(u!=null){
         //创建cookie对象
         Cookie  c=new Cookie("uid", u.getUid()+"");
         //设置过期时间3天
         c.setMaxAge(3600*24*3);
         //设置cookie到达路径
         c.setPath("/loginServlet/cookie");
         //增加cookie
         resp.addCookie(c);
         //创建session并存储用户数据
         HttpSession hs=req.getSession();
         hs.setAttribute("user", u);
         //重定向到main
         resp.sendRedirect("main");

     }else{
         //携带信息
         req.setAttribute("str", "密码错误");
         //请求转发
         req.getRequestDispatcher("login").forward(req, resp);
     }
}
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>2018-3-8-loginServlet</display-name>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.bjsxt.servlet.LoginServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>UserServlet</servlet-name>
    <servlet-class>com.bjsxt.servlet.UserServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>MainServlet</servlet-name>
    <servlet-class>com.bjsxt.servlet.MainServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>CookieServlet</servlet-name>
    <servlet-class>com.bjsxt.servlet.CookieServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>ShowServlet</servlet-name>
    <servlet-class>com.bjsxt.servlet.ShowServlet</servlet-class>
  </servlet>
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>ShowServlet2</servlet-name>
    <servlet-class>com.bjsxt.servlet.ShowServlet2</servlet-class>
  </servlet>






  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>UserServlet</servlet-name>
    <url-pattern>/user</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>MainServlet</servlet-name>
    <url-pattern>/main</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>CookieServlet</servlet-name>
    <url-pattern>/cookie</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ShowServlet</servlet-name>
    <url-pattern>/show</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ShowServlet2</servlet-name>
    <url-pattern>/show2</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

需要的资料:
导入mysql-connector-java-5.1.30.jar
数据库中的t_user表 字段为 int uid ,varchar uname,varchar upwd,varchar uphone,int rid.
使用时应该改数据库的url user password

小结

请求编码和Cookie学习
session学习
ServletConfig对象和ServletContext对象学习

Servlet第一天:
    创建并执行一个Servlet,并理解是如何执行的。
Servlet第二天:
    使用Servlet处理用户请求。
Servlet第三天:
    实现3天免登录和欢迎XXX登录

小知识点:

1.编码格式设置。
//设置请求编码格式
        req.setCharacterEncoding("utf-8");
        //设置响应编码格式
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

--------------------
post请求方式:
            在service中使用req.setCharacterEncoding("utf-8")即可
get请求方式:
            1 在service中使用req.setCharacterEncoding("utf-8")
            2 在tomcat的server.xml中配置
                  <Connector port="8080" protocol="HTTP/1.1"
                               connectionTimeout="20000"
                              redirectPort="8443"  useBodyEncodingForURI="true"/>

-------------------------

2.cookies和缓存 cache的区别
3.cookies实现3天免登录,session实现欢迎XXX。
3.cookie和session的区别
cookie在客户端浏览器
session在服务器端
4.小案例:N天免登录功能+欢迎---访问功能+在浏览器端获取所有的用户信息并显示。
5.cookie只是免去了用户登录的麻烦,并没有减少表单提交和查询数据库。
6.request和response是由tomcat创建。
7.浏览器使用技巧:alt查看工具栏。
8. Cookie  c=new Cookie("uid", u.getUid()+"");  这里要把一个人账户的Uid存到cookie中,后面根据这个去查询数据库然后实现功能, u,getUid()+""是为了把int转成String
9. //创建session并存储用户数据
         HttpSession hs=req.getSession();
         hs.setAttribute("user", u);   要放在 response语句之前
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值