请求编码和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语句之前