记得,struts2的要在web.xml里面写struts的filter否则,,哼哼!
/login/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>个人信息管理系统</title>
</head>
<body bgcolor="#aabbccdd">
<s:form action="loginAction" method="post">
<table align="center" width="100%">
<tr>
<td colspan="2" align="center" >
<h1>个人信息管理系统</h1>
</td>
</tr>
<tr>
<td colspan="2">
<hr align="center" width="100%" size="8" color="white"/>
</td>
</tr>
<tr>
<td width="30%" align="center">
<img src="<%=request.getContextPath()%>/image/6801.jpg" alt="sign" height="280"/>
</td>
<td width="70%">
<table border="4" align="center" >
<tr>
<td>
<s:textfield name="userName" label="登录名" size="16"/>
</td>
</tr>
<tr>
<td>
<s:password name="password" label="密码" size="17"/>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="确定"/>
<input type="reset" value="清空"/>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<s:a href="/login/register.jsp">注册</s:a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</s:form>
</body>
</html>
------------------------
loginAction
package edu.login.Action;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.interceptor.ServletRequestAware;
import com.opensymphony.xwork2.ActionSupport;
import DBJavaBean.DB;
public class loginAction extends ActionSupport implements ServletRequestAware{
private static final long serialVersionUID = 1L;
private String userName;
private String password;
private HttpServletRequest request;
private ResultSet rs;
private String message="error";
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public void validate() {
if(this.getUserName()==null||this.getUserName().length()==0)
{
addFieldError("userName", "请输入用户名");
}
else{
try {
DB mysql=new DB();
rs=mysql.selectLogin(request, getUserName(), getPassword());
if(!rs.next())
{
addFieldError("userName","此用户尚未注册");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(this.getPassword()==null||this.getPassword().length()==0)
{
addFieldError("password", "请输入密码");
}
else{
try {
DB mysql=new DB();
rs=mysql.selectMess(request, this.getUserName());
if(!rs.next())
{
addFieldError("password","密码输入错误");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public String execute()throws Exception
{
DB mysql=new DB();
String add=mysql.addList(request, getUserName());
if(add.equals("ok"))
{
message="success";
}
return message;
}
}
DB.java
package DBJavaBean;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import JavaBean.UserNameBean;
和数据库有关的像statement,connection这种单独设变量因为下面会多次用到
尤其注意request每一个和用户数据有关的方法都有request作为参数
public class DB implements ServletRequestAware {
private String driverName="com.mysql.jdbc.Driver";
private String url="jdbc:mysql://localhost:3309/personal?userUnicode=true&characterEncoding=gbk";
private String user="root";
private String password="admin";
private Connection con=null;
private Statement st=null;
private ResultSet rs=null;
private HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest arg0) {
request=arg0;
}
public String getDriverName() {
return driverName;
}
public void setDriverName(String driverName) {
this.driverName = driverName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Connection getCon() {
return con;
}
public void setCon(Connection con) {
this.con = con;
}
public Statement getSt() {
return st;
}
public void setSt(Statement st) {
this.st = st;
}
public ResultSet getRs() {
return rs;
}
public void setRs(ResultSet rs) {
this.rs = rs;
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public DB(String driverName, String url, String user, String password, Connection con, Statement st, ResultSet rs,
HttpServletRequest request) {
super();
this.driverName = driverName;
this.url = url;
this.user = user;
this.password = password;
this.con = con;
this.st = st;
this.rs = rs;
this.request = request;
}
public DB() {
super();
}
//----------------------------------------
//完成数据库连接,并生成容器并返回
public Statement getStatement()
{
try {
Class.forName(getDriverName());
con=DriverManager.getConnection(getUrl(),getUser(),getPassword());
return con.createStatement();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//查询个人信息,返回结果集
public ResultSet selectMess(HttpServletRequest request,String userName)
{
try {
String sql="select * from user where userName='"+userName+"'";
st=getStatement();
return st.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//查询登录名和密码是否存在
public ResultSet selectLogin(HttpServletRequest request,String userName,String password)
{
try {
String sql="select * from user where userName='"+userName+"' and password='"+password+"'";
st=getStatement();
return st.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//吧登录用户的信息存到session对象中
public String myLogin(HttpServletRequest request,String userName)
{
try {
ArrayList listName=null;
HttpSession session=request.getSession();
listName=new ArrayList();
rs=selectMess(request,userName);
if(rs.next())
{
UserNameBean mess=new UserNameBean();
mess.setUserName(rs.getString("userName"));
mess.setPassword(rs.getString("password"));
listName.add(mess);
session.setAttribute("userName", listName);
}
else{
session.setAttribute("userName", listName);
}
return "ok";
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
//将所有与用户相关的信息都加到session里
public String addList(HttpServletRequest request,String userName)
{
String sure=null;
String login=myLogin(request,userName);
if(login.equals("ok"))
{
sure="ok";
}
return sure;
}
}
-------------------------------------------------------
登录后的主页面
main.jsp (框架链入型,无《body》标签)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>个人信息管理系统</title>
</head>
<frameset cols="20%, *" >
<frame src="<%=request.getContextPath()%>/mainFrame/left.jsp" name="left" scrolling="no">
<frameset rows="20%,10%,*">
<frame src="<%=request.getContextPath()%>/mainFrame/top.jsp" name="top" scrolling="no">
<frame src="<%=request.getContextPath()%>/mainFrame/toop.jsp" name="toop" scrolling="no">
<frame src="<%=request.getContextPath()%>/mainFrame/about.jsp" name="main" scrolling="no">
</frameset>
</frameset>
</html>
toop.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ page import="JavaBean.UserNameBean" %>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="#ccceee">
<%
String loginname=null;
ArrayList login=(ArrayList)session.getAttribute("userName"); //在DB的方法中将与用户有关的都打包到userName中了,所以下面有一个UserNameBean将它们具体出来
if(login==null||login.size()==0)
{
loginname="little sun";
}
else{
for(int i=login.size()-1;i>=0;i--)
{
UserNameBean nm=(UserNameBean)login.get(i); //用到这个Bean可以在后面更好的调用信息,注意一下,强制类型转换是括号括类型
loginname=nm.getUserName();
}
}
%>
<table width="100%" align="right" bgcolor="blue">
<tr height="10" bgcolor="gray" align="center">
<td>你好,<%=loginname %></td>
<td><a>个人信息管理</a></td>
<td><a>通讯录管理</a></td>
<td><a>个人文件管理</a></td>
<td><a href="<%=request.getContextPath()%>/login/index.jsp">退出系统</a></td>
</tr>
</table>
</body>
</html>
left.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="#ccceee">
<table>
<tr align="center">
<td>
<img src="<%=request.getContextPath()%>/image/111.jpg" height="600" width="200">
</td>
</tr>
</table>
</body>
</html>
top.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body bgcolor="#ccceee">
<table width="100%" align="center">
<tr align="center">
<td align="center">
<h1>
<font color="blue">欢迎使用个人信息管理系统</font>
</h1>
</td>
</tr>
</table>
</body>
</html>