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

欢迎加入我的QQ交流群425783133

\\\

?
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 implements Serializable{
   
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private Integer id;
    private String name;
    private String pass;
    public Admin() {
        super ();
        // TODO Auto-generated constructor stub
    }
    public Admin(Integer id, String name, String pass) {
        super ();
        this .id = id;
        this .name = name;
        this .pass = pass;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this .id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this .name = name;
    }
    public String getPass() {
        return pass;
    }
    public void setPass(String pass) {
        this .pass = pass;
    }
    @Override
    public String 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= "" > {
    /**
     * 插入数据
     */
    boolean insert(T entity);
    /**
     * 根据实体删除数据
     */
    boolean delete(T entity);
    /**
     * 根据ID删除数据
     */
    boolean deleteById(PK id);
    /**
     * 修改数据
     */
    boolean update(T entity);
    /**
     * 查询所有数据
     */
    List<t> findAll();
    /**
     * 根据ID查询数据
     */
    T findById(PK id);
    /**
     * 根据当前页查询数据
     */
    List<t> findNowPageInfo( int nowpage, int pagesize,String sortName,String sortOrder);
    /**
     * 返回总页数
     */
    Integer getCountPage( int pagesize);
    /**
     * 批量删除
     */
    boolean deletes(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 extends BaseDao {
    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 implements AdminDao {
    private Connection conn;
    private PreparedStatement pstmt;
    private ResultSet rs;
    @Override
    public boolean insert(Admin entity) {
        return JdbcUtil.upDate( "insert into admin (name,pass) values (?,?)" ,
                new Object[] { entity.getName(), entity.getPass() });
    }
    @Override
    public boolean delete(Admin entity) {
        // TODO Auto-generated method stub
        return deleteById(entity.getId());
    }
    @Override
    public boolean deleteById(Integer id) {
        // TODO Auto-generated method stub
        return JdbcUtil.upDate( "delete from admin where id=?" ,
                new Object[] { id });
    }
    @Override
    public boolean 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
    public List findAll() {
        // TODO Auto-generated method stub
        return null ;
    }
    @Override
    public Admin findById(Integer id) {
        // TODO Auto-generated method stub
        return null ;
    }
    @Override
    public List findNowPageInfo( int nowpage, int pagesize,
            String sortName, String sortOrder) {
        // TODO Auto-generated method stub
        return null ;
    }
    @Override
    public Integer getCountPage( int pagesize) {
        // TODO Auto-generated method stub
        return null ;
    }
    @Override
    public boolean deletes(Object[] ids) {
        // TODO Auto-generated method stub
        return false ;
    }
    @Override
    public Admin 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 = new Admin();
                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
    public Admin 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 = new Admin();
                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= "" > {
    /**
     * 插入数据
     */
    boolean insert(T entity);
    /**
     * 根据实体删除数据
     */
    boolean delete(T entity);
    /**
     * 根据ID删除数据
     */
    boolean deleteById(PK id);
    /**
     * 修改数据
     */
    boolean update(T entity);
    /**
     * 查询所有数据
     */
    List<t> findAll();
    /**
     * 根据ID查询数据
     */
    T findById(PK id);
    /**
     * 根据当前页查询数据
     */
    List<t> findNowPageInfo( int nowpage, int pagesize,String sortName,String sortOrder);
    /**
     * 返回总页数
     */
    Integer getCountPage( int pagesize);
    /**
     * 批量删除
     */
    boolean deletes(Object ids[]);
}
package service;
import bean.Admin;
public interface AdminService extends BaseService {
    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 implements AdminService {
    AdminDao adminDao = new AdminDaoImpl();
    @Override
    public boolean insert(Admin entity) {
        return adminDao.insert(entity);
    }
    @Override
    public boolean delete(Admin entity) {
        return false ;
    }
    @Override
    public boolean deleteById(Integer id) {
        return false ;
    }
    @Override
    public boolean update(Admin entity) {
        return false ;
    }
    @Override
    public List findAll() {
        return null ;
    }
    @Override
    public Admin findById(Integer id) {
        return null ;
    }
    @Override
    public List findNowPageInfo( int nowpage, int pagesize,
            String sortName, String sortOrder) {
        return null ;
    }
    @Override
    public Integer getCountPage( int pagesize) {
        return null ;
    }
    @Override
    public boolean deletes(Object[] ids) {
        return false ;
    }
    @Override
    public Admin checkLogin(String name, String pass) {
        Admin entity = adminDao.checkLogin(name, pass);
        return entity;
    }
    @Override
    public Admin 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 extends HttpServlet {
    private AdminService adminService = new AdminServiceImpl();
    // 规定时间常量,为一天
    private final int EXPIRES =  60 * 60 * 24 ;
    public void 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);
        }
    }
    private void adminLogin(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, 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 = new Cookie( "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);
        }
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this .doGet(request, response);
    }
    //加密的操作方法
    public String 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 = new BASE64Encoder();
            // 返回加密后的数据
            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 implements Filter {
    private FilterConfig filterConfig;
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }
    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) res;
        // 编码的设置
        request.setCharacterEncoding(filterConfig.getInitParameter( "encoding" ));
        chain.doFilter(request, response);
    }
    @Override
    public void 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 implements Filter {
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
    }
    @Override
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) throws IOException, 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 = new AdminServiceImpl();
            // 向数据库发送数据请求
            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
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
    }
    // 加密的操作函数
    public String md5Value(String value) {
        try {
            // 获取md5加密的对象
            MessageDigest digest = MessageDigest.getInstance( "md5" );
            // 将传入的数据装换为byte字节,在用digest进行转换(加密)成新的字节数组,
            byte result[] = digest.digest(value.getBytes());
            BASE64Encoder encoder = new BASE64Encoder();
            // 返回加密后的数据
            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" %>
<% @include file= "/common/tag.jsp" %>
<% @include file= "/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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值