請求編碼和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語句之前