java_web用户的自动登录模块的实现

来源:互联网 发布:linux squid 启动 编辑:程序博客网 时间:2024/04/30 16:30

\\\

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
javaBean的代码
package bean;
import java.io.Serializable;
public class Admin implementsSerializable{
   
    /**
     *
     */
    privatestatic final long serialVersionUID = 1L;
    privateInteger id;
    privateString name;
    privateString pass;
    publicAdmin() {
        super();
        // TODO Auto-generated constructor stub
    }
    publicAdmin(Integer id, String name, String pass) {
        super();
        this.id = id;
        this.name = name;
        this.pass = pass;
    }
    publicInteger getId() {
        return id;
    }
    publicvoid setId(Integer id) {
        this.id = id;
    }
    publicString getName() {
        return name;
    }
    publicvoid setName(String name) {
        this.name = name;
    }
    publicString getPass() {
        return pass;
    }
    publicvoid setPass(String pass) {
        this.pass = pass;
    }
    @Override
    publicString toString() {
        return "AdminBean [id="+ id + ", name="+ name + ", pass="+ pass
               + "]";
    }
}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
dao的基础接口类
package dao;
import java.util.List;
public interface BaseDao<t, PK=""> {
    /**
     * 插入数据
     */
    booleaninsert(T entity);
    /**
     * 根据实体删除数据
     */
    booleandelete(T entity);
    /**
     * 根据ID删除数据
     */
    booleandeleteById(PK id);
    /**
     * 修改数据
     */
    booleanupdate(T entity);
    /**
     * 查询所有数据
     */
    List<t> findAll();
    /**
     * 根据ID查询数据
     */
    T findById(PK id);
    /**
     * 根据当前页查询数据
     */
    List<t> findNowPageInfo(intnowpage, int pagesize,String sortName,String sortOrder);
    /**
     * 返回总页数
     */
    Integer getCountPage(intpagesize);
    /**
     * 批量删除
     */
    booleandeletes(Object ids[]);
}</t></t></t,>

?
1
2
3
4
5
6
7
8
9
10
11
对admin操作的接口类,继承自basedao
package dao;
import bean.Admin;
public interface AdminDao extendsBaseDao {
    Admin checkLogin(String name,String pass);
    Admin checkLogin(String name);
   
}</admin,>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
dao操作实体的实现类
package daoImpl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import util.JdbcUtil;
import bean.Admin;
import dao.AdminDao;
public class AdminDaoImpl implementsAdminDao {
    privateConnection conn;
    privatePreparedStatement pstmt;
    privateResultSet rs;
    @Override
    publicboolean insert(Admin entity) {
        return JdbcUtil.upDate("insert into admin (name,pass) values (?,?)",
               new Object[] { entity.getName(), entity.getPass() });
    }
    @Override
    publicboolean delete(Admin entity) {
        // TODO Auto-generated method stub
        return deleteById(entity.getId());
    }
    @Override
    publicboolean deleteById(Integer id) {
        // TODO Auto-generated method stub
        return JdbcUtil.upDate("delete from admin where id=?",
               new Object[] { id });
    }
    @Override
    publicboolean update(Admin entity) {
        // TODO Auto-generated method stub
        return JdbcUtil.upDate(
               "update admin set name=?,pass=? where id=?",
               new Object[] { entity.getName(), entity.getPass(),
                       entity.getId() });
    }
    @Override
    publicList findAll() {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    publicAdmin findById(Integer id) {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    publicList findNowPageInfo(intnowpage, int pagesize,
            String sortName, String sortOrder) {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    publicInteger getCountPage(intpagesize) {
        // TODO Auto-generated method stub
        return null;
    }
    @Override
    publicboolean deletes(Object[] ids) {
        // TODO Auto-generated method stub
        return false;
    }
    @Override
    publicAdmin checkLogin(String name, String pass) {
        // TODO Auto-generated method stub
        Admin entity = null;
        String sql = "select * from admin where name=? and pass=?";
        conn = JdbcUtil.getConn();
        try {
            pstmt = conn.prepareStatement(sql);
            int index = 1;
            pstmt.setString(index++, name);
            pstmt.setString(index++, pass);
            rs = pstmt.executeQuery();
            if (rs.next()) {
               entity = newAdmin();
               entity.setId(rs.getInt("id"));
               entity.setName(rs.getString("name"));
               entity.setPass(rs.getString("pass"));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            JdbcUtil.release(rs, pstmt);
        }
        return entity;
    }
    @Override
    publicAdmin checkLogin(String name) {
        Admin entity = null;
        String sql = "select * from admin where name=?";
        conn = JdbcUtil.getConn();
        try {
            pstmt = conn.prepareStatement(sql);
            int index = 1;
            pstmt.setString(index++, name);
            rs = pstmt.executeQuery();
            if (rs.next()) {
               entity = newAdmin();
               entity.setId(rs.getInt("id"));
               entity.setName(rs.getString("name"));
               entity.setPass(rs.getString("pass"));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            JdbcUtil.release(rs, pstmt);
        }
        return entity;
    }
}</admin></admin>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
服务器接口类,用来将操作数据库的方法与记录历史的方法或其他的方法分离开,作用是增强代码的可读性以及条理性,
package service;
import java.util.List;
public interface BaseService<t, PK=""> {
    /**
     * 插入数据
     */
    booleaninsert(T entity);
    /**
     * 根据实体删除数据
     */
    booleandelete(T entity);
    /**
     * 根据ID删除数据
     */
    booleandeleteById(PK id);
    /**
     * 修改数据
     */
    booleanupdate(T entity);
    /**
     * 查询所有数据
     */
    List<t> findAll();
    /**
     * 根据ID查询数据
     */
    T findById(PK id);
    /**
     * 根据当前页查询数据
     */
    List<t> findNowPageInfo(intnowpage, int pagesize,String sortName,String sortOrder);
    /**
     * 返回总页数
     */
    Integer getCountPage(intpagesize);
    /**
     * 批量删除
     */
    booleandeletes(Object ids[]);
}
packageservice;
import bean.Admin;
public interface AdminService extendsBaseService {
    Admin checkLogin(String name,String pass);
    Admin checkLogin(String name);
}</admin,></t></t></t,>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
实现服务器接口方法的实现类
package serviceImpl;
import java.util.List;
import dao.AdminDao;
import daoImpl.AdminDaoImpl;
import bean.Admin;
import service.AdminService;
public class AdminServiceImpl implementsAdminService {
    AdminDao adminDao =new AdminDaoImpl();
    @Override
    publicboolean insert(Admin entity) {
        return adminDao.insert(entity);
    }
    @Override
    publicboolean delete(Admin entity) {
        return false;
    }
    @Override
    publicboolean deleteById(Integer id) {
        return false;
    }
    @Override
    publicboolean update(Admin entity) {
        return false;
    }
    @Override
    publicList findAll() {
        return null;
    }
    @Override
    publicAdmin findById(Integer id) {
        return null;
    }
    @Override
    publicList findNowPageInfo(intnowpage, int pagesize,
            String sortName, String sortOrder) {
        return null;
    }
    @Override
    publicInteger getCountPage(intpagesize) {
        return null;
    }
    @Override
    publicboolean deletes(Object[] ids) {
        return false;
    }
    @Override
    publicAdmin checkLogin(String name, String pass) {
        Admin entity = adminDao.checkLogin(name, pass);
        return entity;
    }
    @Override
    publicAdmin checkLogin(String name) {
        Admin entity = adminDao.checkLogin(name);
        return entity;
    }
}</admin></admin>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
用来将页面传入的信息进行分析处理的服务器类,
package servlet;
import java.io.IOException;
import java.net.URLEncoder;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.jms.Message;
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 com.sun.mail.util.BASE64DecoderStream;
import com.sun.mail.util.BASE64EncoderStream;
import service.AdminService;
import serviceImpl.AdminServiceImpl;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import bean.Admin;
public class AdminServlet extendsHttpServlet {
    privateAdminService adminService = newAdminServiceImpl();
    // 规定时间常量,为一天
    privatefinal int EXPIRES =  60 * 60 * 24;
    publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // request.setCharacterEncoding("UTF-8");
        String oper = request.getParameter("oper");
        if ("adminLogin".equals(oper)) {
            adminLogin(request, response);
        }
        if ("login".equals(oper)) {
            request.getRequestDispatcher("./login.jsp").forward(request,
                   response);
        }
    }
    privatevoid adminLogin(HttpServletRequest request,
            HttpServletResponse response) throwsServletException, IOException {
       
        //获取表单提交的数据
        String name = request.getParameter("name");
        String pass = request.getParameter("pass");
        String mark = request.getParameter("mark");
        String day = request.getParameter("day");
//      System.out.println(name + "====" + pass + "====" + mark
//              + "============" + day);
        //根据获取的数据向数据库发送数据请求,
        Admin entity = adminService.checkLogin(name, pass);
        //判断查询结果
        if (entity != null) {
            //判断用户是否进行记录密码和自动登陆的操作
            if ("mark".equals(mark)) {
               // 获取当前的时间并加上要保存的时间长度
               long time = System.currentTimeMillis()
                       + (EXPIRES * Integer.valueOf(day)*1000);
               // 声明cookie
               Cookie autoCookie = null;
               // 获取所有的cookie的数组
               Cookie cookies[] = request.getCookies();
               // 遍历判断
               for (Cookie cookie : cookies) {
                   // 判断是否已经存在cookie记录
                   if ("autoLogin".equals(cookie.getName())) {
                       // 存在即直接赋值
                       autoCookie = cookie;
                       // 并改变内容
                       String newValue = name
                               + ":"
                               + time
                               + ":"
                               + md5Value(pass + ":"+ name + ":" + time
                                       + ":donghongyujava");
                       autoCookie.setValue(newValue);
                   } else {
                       String cookieValue = name
                               + ":"
                               + time
                               + ":"
                               + md5Value(pass + ":"+ name + ":" + time
                                       + ":donghongyujava");
                       /*
                        * Control character in cookie value or attribute.
                        * 当存入的数据是中文时,cookie会出现乱码现象 需要进行编码的转换
                        */
                       autoCookie = newCookie("autoLogin", URLEncoder.encode(
                               cookieValue, "UTF-8"));
                   }
               }
               // 设置cookie的最长的存活时间
               autoCookie.setMaxAge(EXPIRES * Integer.valueOf(day));
               response.addCookie(autoCookie);
            }
            // 将admin存入到session
            request.getSession().setAttribute("admin", entity);
            // 设置成功后就登陆操作
            request.getRequestDispatcher("./sc.jsp").forward(request, response);
        } else {
           
            request.setAttribute("msg","用户名或密码错误请重试");
            request.getRequestDispatcher("./login.jsp").forward(request,
                   response);
        }
    }
    publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }
    //加密的操作方法
    publicString md5Value(String value) {
        try {
            // 获取md5加密的对象
            MessageDigest digest = MessageDigest.getInstance("md5");
            // 将传入的数据装换为byte字节,在用digest进行转换(加密)成新的字节数组,
            byte result[] = digest.digest(value.getBytes());
            //需要的jdk版本myeclipse2013中自带的com.sun.java.jdk.win32.x86_64_1.6.0.u43
            //jdk1.7.0_25没有相关的包
            BASE64Encoder encoder = newBASE64Encoder();
            // 返回加密后的数据
            return encoder.encode(result);
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "";
    };
}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
过滤器类,用来设置请求的编码
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EncodingFilter implementsFilter {
    privateFilterConfig filterConfig;
    @Override
    publicvoid destroy() {
        // TODO Auto-generated method stub
    }
    @Override
    publicvoid doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throwsIOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        // 编码的设置
        request.setCharacterEncoding(filterConfig.getInitParameter("encoding"));
        chain.doFilter(request, response);
    }
    @Override
    publicvoid init(FilterConfig filterConfig)throws ServletException {
        // TODO Auto-generated method stub
        this.filterConfig=filterConfig;
    }
}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
自动登录的过滤类,用来控制用户的自动的登录操作的相关
package filter;
import java.io.IOException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import bean.Admin;
import service.AdminService;
import serviceImpl.AdminServiceImpl;
import sun.misc.BASE64Encoder;
public class AutoLoginFilter implementsFilter {
    @Override
    publicvoid destroy() {
        // TODO Auto-generated method stub
    }
    @Override
    publicvoid doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throwsIOException, ServletException {
        // 强制造型为子类型
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        // 1.首先判断session
        Object object = request.getSession().getAttribute("admin");
        if (object != null) {
            request.getRequestDispatcher("./sc.jsp").forward(request, response);
            return;
        }
        // 2.判断cookie中是否存在用户的记录
        Cookie autoCookie = null;
        // 获取所有的cookie进行遍历判断
        Cookie cookies[] = request.getCookies();
        if (cookies != null) {
            for (Cookie cookie : cookies) {
               // 判断是否已经存贮用户记录
               if ("autoLogin".equals(cookie.getName())) {
                   autoCookie = cookie;
               }
            }
            // 判断是否存在用户自动登录记录
            if (autoCookie == null) {
               chain.doFilter(request, response);
               return;
            }
            // 3.判断cookie的值
            // 获取cookie值
            String value = autoCookie.getValue();
            // 拆分
            String temps[] = value.split(":");
            // 判断长度是否是自定义的长度
            if (temps.length != 3) {
               chain.doFilter(request, response);
               return;
            }
            // 获取拆分后的数据
            String name = temps[0];
           
            String time = temps[1];
           
            String service_md5Value = temps[2];
            // 4.根据时间判断是否失效
            if (Long.valueOf(time) <= System.currentTimeMillis()) {
               chain.doFilter(request, response);
               return;
            }
            // 5.根据用户名查询数据
            AdminService adminService = newAdminServiceImpl();
            // 向数据库发送数据请求
            Admin entity = adminService.checkLogin(name);
            if (entity == null) {
               chain.doFilter(request, response);
               return;
            }
            // 6.拼接字符串在进行二次判断,
            String md5Temp = entity.getPass() + ":"+ entity.getName() + ":"
                   + time + "donghongyujava";
            if (!(md5Value(md5Temp).equals(service_md5Value))) {
               chain.doFilter(request, response);
               return;
            }
            // 7.如果以上的判断都通过,那么就发送成功的转跳连接
            request.getSession().setAttribute("admin", entity);
            request.getRequestDispatcher("./sc.jsp").forward(request, response);
        } else {
            chain.doFilter(request, response);
            return;
        }
    }
    @Override
    publicvoid init(FilterConfig arg0)throws ServletException {
        // TODO Auto-generated method stub
    }
    // 加密的操作函数
    publicString md5Value(String value) {
        try {
            // 获取md5加密的对象
            MessageDigest digest = MessageDigest.getInstance("md5");
            // 将传入的数据装换为byte字节,在用digest进行转换(加密)成新的字节数组,
            byte result[] = digest.digest(value.getBytes());
            BASE64Encoder encoder = newBASE64Encoder();
            // 返回加密后的数据
            return encoder.encode(result);
        } catch (NoSuchAlgorithmException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return "";
    };
}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
web的配置,主要配置的是servlet和filter的配置
<?xml version="1.0"encoding="UTF-8"?>
<?XML:NAMESPACE PREFIX = [default] http://java.sun.com/xml/ns/javaee NS = "http://java.sun.com/xml/ns/javaee" /><web-app id="WebApp_ID" xmlns="http://java.sun.com/xml/ns/javaee" version="3.0" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <display-name>jqueryeasyui</display-name>
    <servlet>
        <servlet-name>AdminServlet</servlet-name>
        <servlet-class>servlet.AdminServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AdminServlet</servlet-name>
        <url-pattern>/AdminOPer.do</url-pattern>
    </servlet-mapping>
    <filter>
        <filter-name>AutoLoginFilter</filter-name>
        <filter-class>filter.AutoLoginFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>AutoLoginFilter</filter-name>
        <url-pattern>/AdminOPer.do</url-pattern>
    </filter-mapping>
    <filter>
        <filter-name>EncodingFilter</filter-name>
        <filter-class>filter.EncodingFilter</filter-class>
        <!-- 设置传入的参数是UTF-8-->
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <!-- 设置所有的请求操作都进行这个过滤的操作 -->
    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-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>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
用来跳转的jsp代码
<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
    <base href="<%=basePath%>">
   
    <title>My JSP'index.jsp' starting page</title>
   
    <meta content="no-cache"http-equiv="pragma">
    <meta content="no-cache"http-equiv="cache-control">
    <meta content="0"http-equiv="expires">   
    <meta content="keyword1,keyword2,keyword3"http-equiv="keywords">
    <meta content="This is my page"http-equiv="description">
    <!--
    <link rel="stylesheet"type="text/css" href="styles.css">
    -->
 
 
 
   登录操作

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
要登陆的表单界面
<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
<%@includefile="/common/tag.jsp"%>
<%@includefile="/common/jquery.jsp"%>
<html>
<title>My JSP 'index.jsp' starting page</title>
<meta content="no-cache"http-equiv="pragma">
<meta content="no-cache"http-equiv="cache-control">
<meta content="0"http-equiv="expires">
<meta content="keyword1,keyword2,keyword3"http-equiv="keywords">
<meta content="This is my page"http-equiv="description">
<!--
    <link rel="stylesheet"type="text/css" href="styles.css">
    -->
    <div>
        <!-- 登录错误时的提示操作 -->
        <b>${requestScope.msg}</b>
        <!-- ${pageContext.request.contextPath}代表当前项目路径下的操作 -->
        <form method="post"action="${pageContext.request.contextPath}/AdminOPer.do">
            <table border="1">
               <tbody><tr>
                   <td>用户名:</td>
                   <td><input name="name"type="text"></td>
               </tr>
               <tr>
                   <td>密码:</td>
                   <td><input name="pass"type="text"></td>
               </tr>
               <tr>
                   <td align="right"><input name="mark"value="mark" type="checkBox"></td>
                   <td>下次记住密码</td>
               </tr>
               <tr>
                   <td colSpan="2"><input name="day"value="1" type="radio">一天
                       <input name="day"value="3" type="radio">三天 <input name="day"value="7" CHECKED="checked" type="radio">一周</td>
               </tr>
               <tr>
                   <td colSpan="2"align="center"><input id="submit"value="登录" type="submit"><input id="reset"value="重置" type="reset"></td>
               </tr>
            </tbody></table>
            <input name="oper"value="adminLogin"type="hidden">
        </form>
    </div>

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
成功登录后的界面jsp代码
<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>
<%
    String path = request.getContextPath();
    String basePath = request.getScheme() +"://"
            + request.getServerName() + ":"+ request.getServerPort()
            + path + "/";
%>
<base href="<%=basePath%>">
<title>My JSP 'sc.jsp' starting page</title>
<meta content="no-cache"http-equiv="pragma">
<meta content="no-cache"http-equiv="cache-control">
<meta content="0"http-equiv="expires">
<meta content="keyword1,keyword2,keyword3"http-equiv="keywords">
<meta content="This is my page"http-equiv="description">
<!--
    <link rel="stylesheet"type="text/css" href="styles.css">
    -->
<!-- 从session域中取出已经存入的用户对象 -->
    欢迎  <b>${sessionScope.admin.name}</b>进入
1 0
原创粉丝点击