struts2实现用户登录、用户和日记本增删改查(myeclipse和sql server对接)

1.架包(一共10个包)


 有兴趣的朋友可以去网上下载之类的包文件,我这里的包文件基本都是较新的版本

2.首先配web.xml文件(以下是我的web配置)


3.配置struts文件(我这里是把两个配置文件放到一个包里,然后从struts里面导入)




报错红点,这里在我电脑上没有影响(我也不知道什么原因,但是能用,可能是版本的适配原因,欢迎小伙伴们指正错误)

4.搭建框架

(1)uitl包

DBHelper类

 package com.czg.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBHelper {
//定义数据库驱动字符串
private String driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver";
//定义连接字符串
private String driverUrl="jdbc:sqlserver://172.28.113.100:1982;databasename=WebNote";
//定义连接对象
private Connection conn;

//打开连接
public void openConn()
{
//加载驱动
try {
Class.forName(this.driverClass);
//得到连接
this.conn=DriverManager.getConnection(this.driverUrl, "sa", "123456");
System.out.println("数据库连接成功!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}

//获得连接
public Connection getConn()
{
this.openConn();//执行打开连接
return this.conn;//返回连接
}
//关闭连接
public void close()
{
if(conn!=null)
{
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

DateUtils(获得系统时间的工具包)

package com.czg.util;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    public static String DateToString(Date date)
    {
    return sdf.format(date);
    }

}

(2)model包

      User类

package com.czg.model;
public class User {
private int id;//编号
private String sid;//学号
private String name;//姓名
private String cname;//班级
private String pass;//密码
private int money;//宇宙币
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public int getMoney() {
return money;
}
public void setMoney(int money) {
this.money = money;
}
@Override
public String toString() {
return "User [cname=" + cname + ", id=" + id + ", money=" + money
+ ", name=" + name + ", pass=" + pass + ", sid=" + sid + "]";
}
   }

   Note类

package com.czg.model;
public class Note {
private int id;//日记编号
private String title;//标题
private String content;//内容
private String notedate;//日期
private User user;//子对象
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getNotedate() {
return notedate;
}
public void setNotedate(String notedate) {
this.notedate = notedate;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
    
}

(3)dao包

    UserDao类

package com.czg.dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.czg.model.User;
import com.czg.util.DBHelper;
public class UserDao {
//关联DBHelper
private DBHelper dbHelper=new DBHelper();
//查找所有用户信息
public List<User> findAll()
{
//定义集合对象
List<User> list=new ArrayList<User>();
//定义查询语句
String sql="select * from tbUser";
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//得到集合
ResultSet rs=pt.executeQuery();
//处理集合
while(rs.next())
{
   User user=new User();//关联User表
   user.setId(rs.getInt("id"));
   user.setSid(rs.getString("sid"));
   user.setName(rs.getString("name"));
   user.setCname(rs.getString("cname"));
   user.setPass(rs.getString("pass"));
   user.setMoney(rs.getInt("money"));
   //添加到list集合中
   list.add(user);
}

} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
//根据id得到某个用户
public User findUserById(int id)
{
User user=null;//
//定义查询语句
String sql="select * from tbUser where id=?";//定义查询语句
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//定义参数
pt.setObject(1, id);
//得到集合
ResultSet rs=pt.executeQuery();
//处理集合
while(rs.next())
{   user=new User();
   user.setId(rs.getInt("id"));
   user.setSid(rs.getString("sid"));
   user.setName(rs.getString("name"));
   user.setCname(rs.getString("cname"));
   user.setPass(rs.getString("pass"));
   user.setMoney(rs.getInt("money"));
}

} catch (SQLException e) {
e.printStackTrace();
}

return user;
}
//添加用户
public void addUser(User user)
{
//定义查询语句
String sql="insert into tbUser(sid,name,cname,pass,money) values(?,?,?,?,?)";//定义查询语句
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//定义参数
pt.setObject(1, user.getSid());
pt.setObject(2, user.getName());
pt.setObject(3, user.getCname());
pt.setObject(4, user.getPass());
pt.setObject(5, user.getMoney());
//得到集合
pt.execute();//执行添加
//添加成功
System.out.println("添加成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
     //更新用户
public void update(User user)
{
//定义查询语句
String sql="update tbUser set sid=?,name=?,cname=?,pass=?,money=? where id=?";//定义查询语句
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//定义参数
pt.setObject(1, user.getSid());
pt.setObject(2, user.getName());
pt.setObject(3, user.getCname());
pt.setObject(4, user.getPass());
pt.setObject(5, user.getMoney());
pt.setObject(6, user.getId());
//得到集合
pt.execute();//执行更新
//更新成功
System.out.println("更新成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
//删除用户
public void delete(int id)
{
//定义查询语句
String sql="delete from tbUser where id=?";//定义查询语句
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//定义参数
pt.setObject(1, id);
//得到集合
pt.execute();//执行删除
//删除成功
System.out.println("删除成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
//判断用户是否存在
public User exist(User enteruser)
{
User user=null;//
//定义查询语句
String sql="select * from tbUser where sid=? and pass=?";//定义查询语句
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//定义参数(sid ,pass)
pt.setObject(1, enteruser.getSid());
pt.setObject(2, enteruser.getPass());
//得到集合
ResultSet rs=pt.executeQuery();
//处理集合
while(rs.next())
{   user=new User();
   user.setId(rs.getInt("id"));
   user.setSid(rs.getString("sid"));
   user.setName(rs.getString("name"));
   user.setCname(rs.getString("cname"));
   user.setPass(rs.getString("pass"));
   user.setMoney(rs.getInt("money"));
}

} catch (SQLException e) {
e.printStackTrace();
}
return user;
 }
 


}

    NoteDao类

package com.czg.dao;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.czg.model.Note;
import com.czg.model.User;
import com.czg.util.DBHelper;
public class NoteDao {
//关联DBHelper
private DBHelper dbHelper=new DBHelper();
//查找所有日记信息
public List<Note> findAll()
{
//定义集合对象
List<Note> list=new ArrayList<Note>();
//定义查询语句
String sql="select tbUser.id,sid,name,cname,pass,money,tbNote.id as noteid,title,content,notedate,userid from tbUser inner join tbNote on tbUser.id=tbNote.userid";
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//得到集合
ResultSet rs=pt.executeQuery();
//处理集合
while(rs.next())
{
   User user=new User();//关联User表
   user.setId(rs.getInt("id"));
   user.setSid(rs.getString("sid"));
   user.setName(rs.getString("name"));
   user.setCname(rs.getString("cname"));
   user.setPass(rs.getString("pass"));
   user.setMoney(rs.getInt("money"));
   //关联Note表
   Note note=new Note();
   note.setId(rs.getInt("noteid"));
   note.setTitle(rs.getString("title"));
   note.setContent(rs.getString("content"));
   note.setNotedate(rs.getString("notedate"));
   note.setUser(user);
   
   //添加到list集合中
   list.add(note);
}

} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
//添加日记
public void adddNote(Note note)
{

//定义查询语句
String sql="insert into tbNote(title,content,notedate,userid) values(?,?,?,?)";//定义查询语句
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//定义参数
pt.setObject(1, note.getTitle());
pt.setObject(2, note.getContent());
pt.setObject(3, note.getNotedate());
pt.setObject(4, note.getUser().getId());
//得到集合
pt.execute();//执行添加
//添加成功
System.out.println("添加日记成功!");
} catch (SQLException e) {
e.printStackTrace();
}
}
//根据id得到某个日记
public Note findUserById(int id)
{
Note note=null;//
//定义查询语句
String sql="select tbUser.id,sid,name,cname,pass,money,tbNote.id as noteid,title,content,notedate,userid from tbUser inner join tbNote on tbUser.id=tbNote.userid where tbNote.id=?";//定义查询语句
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//定义参数
pt.setObject(1, id);
//得到集合
ResultSet rs=pt.executeQuery();
//处理集合
while(rs.next())
{  User user=new User();//关联User表
      user.setId(rs.getInt("id"));
      user.setSid(rs.getString("sid"));
      user.setName(rs.getString("name"));
      user.setCname(rs.getString("cname"));
      user.setPass(rs.getString("pass"));
      user.setMoney(rs.getInt("money"));
   //关联Note表
     note=new Note();
     note.setId(rs.getInt("noteid"));
     note.setTitle(rs.getString("title"));
     note.setContent(rs.getString("content"));
     note.setNotedate(rs.getString("notedate"));
     note.setUser(user);
}

} catch (SQLException e) {
e.printStackTrace();
}

return note;
}

//修改日记
public void UpdateNote(Note note)
{
//定义查询语句
String sql="update tbNote set title=?,content=? where id=?";//定义查询语句
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//定义参数
pt.setObject(1, note.getTitle());
pt.setObject(2, note.getContent());
pt.setObject(3, note.getId());
//得到集合
pt.execute();//执行添加
//添加成功
System.out.println("修改日记成功!");
} catch (SQLException e) {
e.printStackTrace();
}
      }
//删除日记
public void deleteNote(int id)
{
       //定义查询语句
String sql="delete from tbNote where id=?";//定义查询语句
//定义预格式命令
try {
PreparedStatement pt=dbHelper.getConn().prepareStatement(sql);
//定义参数
pt.setObject(1, id);
//得到集合
pt.execute();//执行添加
//添加成功
System.out.println("删除日记成功!");
} catch (SQLException e) {
e.printStackTrace();
}
      }


}

     (4)web包

    UserAction类

package com.czg.web;
import java.util.List;
import com.czg.dao.UserDao;
import com.czg.model.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private User user;
private int id;
private List<User> users;
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
   //浏览用户信息方法
   public String list()
   {
  UserDao userdao=new UserDao();
users=userdao.findAll();
return "success";
   }
   //添加用户方法
   public String add()
   {
  UserDao userDao=new UserDao();
userDao.addUser(user);
return Action.SUCCESS;
   }
   //修改用户前方法
   public String preUpdate()
   {
  UserDao userDao=new UserDao();
user=userDao.findUserById(id);
return Action.SUCCESS;
   }
   //修改用户方法
   public String update()
   {
  UserDao userDao=new UserDao();
userDao.update(user);
return Action.SUCCESS;
   }
//删除用户方法
   public String delete()
   {
  UserDao userDao=new UserDao();
userDao.delete(id);
return Action.SUCCESS;
   }


}

       LoginAction类

  package com.czg.web;
import java.util.Map;
import com.czg.dao.UserDao;
import com.czg.model.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{
private User user;


public User getUser() {
return user;
}


public void setUser(User user) {
this.user = user;
}


@Override
public String execute() throws Exception {
UserDao userDao=new UserDao();
User u=userDao.exist(user);
if(u==null)
{
return Action.ERROR;
}
else{
//将用户编号存到session中
ActionContext actx=ActionContext.getContext();
Map session=actx.getSession();
session.put("userid",u.getId());
return Action.SUCCESS;

} }

}

       NoteAction类

package com.czg.web;
import java.util.Date;
import java.util.List;
import java.util.Map;
import com.czg.dao.NoteDao;
import com.czg.dao.UserDao;
import com.czg.model.Note;
import com.czg.model.User;
import com.czg.util.DateUtils;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class NoteAction extends ActionSupport {

//关联Note
private List<Note> notes;
private Note note;
private int id;

public List<Note> getNotes() {
return notes;
}


public void setNotes(List<Note> notes) {
this.notes = notes;
}


public Note getNote() {
return note;
}


public void setNote(Note note) {
this.note = note;
}


public int getId() {
return id;
}


public void setId(int id) {
this.id = id;
}
    //浏览日记表信息方法
public String list()
{
NoteDao noteDao=new NoteDao();
notes=noteDao.findAll();
return Action.SUCCESS;
}

//新增日记功能
public String add()
{
//得到用户信息
//将用户编号存到session中
ActionContext actx=ActionContext.getContext();
Map session=actx.getSession();
int userid=Integer.parseInt(session.get("userid").toString());
UserDao userDao=new UserDao();
User user=userDao.findUserById(userid);
//补充完整note信息
note.setUser(user);
note.setNotedate(DateUtils.DateToString(new Date()));
//开始新增
NoteDao noteDao=new NoteDao();
noteDao.adddNote(note);
return Action.SUCCESS;
}
//修改日记前
public String preupdate()
{
NoteDao noteDao=new NoteDao();
note=noteDao.findUserById(id);
return Action.SUCCESS;
}
//修改日记
public String update()
{
NoteDao noteDao=new NoteDao();
noteDao.UpdateNote(note);
System.out.println("修改日记成功!");
return Action.SUCCESS;
}
//删除日记
public String delete()
{
NoteDao noteDao=new NoteDao();
noteDao.deleteNote(id);
System.out.println("删除日记成功!");
return Action.SUCCESS;
}
}

5.jsp文件

 (1)关于User(用户的增删改查jsp文件)

    index.jsp(核心代码展示)


       listUser.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'ListNote.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

  </head>
  <body>
    <a href="addUser.jsp">新增用户</a>
    <table width="800">
 <tr><td>编号</td><td>班级</td><td>学号</td><td>姓名</td><td>宇宙币</td><td>修改</td><td>删除</td></tr>
     <c:forEach var="user" items="${users}">
        <tr><td>${user.id}</td><td>${user.cname}</td><td>${user.sid}</td><td>${user.name}</td><td>${user.money}</td><td><a href="preUpdateUser.action?id=${user.id}">修改</a></td><td><a href="deleteUser.action?id=${user.id}">删除</a></td></tr>
     </c:forEach>
    </table>
  </body>
</html>

     addUser.jsp(核心代码展示)


    updateUser.jsp(核心代码展示)

     

    (2)关于登录的jsp

    login.jsp(核心代码展示)


     error.jsp(核心代码展示)

     

 (2)关于Note(日记的增删改查jsp文件)

          ListNote.jsp

     <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'ListNote.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
  </head>
  <body>
     <%int userid=Integer.parseInt(session.getAttribute("userid").toString()); %>
     <a href="addNote.jsp">添加日记</a>
     <table width="800">
       <tr><td>编号</td><td>标题</td><td>内容</td><td>日期</td><td>作者</td></tr>
       <c:forEach var="note" items="${notes}">
          <tr><td>${note.id}</td>
          <td>
          <c:if test="${userid==note.user.id }">
            <a href="preUpdateNote.action?id=${note.id }">${note.title}</a>
          </c:if>
          <c:if test="${userid!=note.user.id }">
               ${note.title}
            </c:if>
          </td>
          <td>${note.content}</td>
          <td>${note.notedate}</td>
          <td>${note.user.name}</td>
          <td><c:if test="${userid==note.user.id }">
            <a href="deleteNote.action?id=${note.id }">删除</a>
          </c:if>
            <c:if test="${userid!=note.user.id }">
                             删除
             </c:if>
          </td>
          </tr>
       </c:forEach>
     </table>
  </body>

</html>

      addNote.jsp(核心代码展示)

  

      update.jsp(核心代码展示)


    6.数据库文件

use master
if exists(select * from sysdatabases where name='WebNote')
  drop database WebNote
create database WebNote
on
(
  name='WebNote_data',--数据库逻辑名
  filename='E:\\WebNote_data.mdf',--数据库物理文件名
  size=3MB,--初始大小
  maxsize=50MB,--最大大小
  filegrowth=1MB--文件增长率
)
log on
(
  name='WebNote_log',--日志逻辑名
  filename='E:\\WebNote_log.ldf',--日志物理文件名
  size=1MB,--初始大小
  maxsize=20MB,--最大大小
  filegrowth=1MB--文件增长率
)
go
use WebNote
--创建用户表
create table tbUser
(
   id int identity(1,1) primary key,--主键,编号
   sid varchar(12),--学生
   name varchar(10),--姓名
   cname varchar(20),--班级名称
   pass varchar(20),--密码
   money int default(50)--宇宙币
)
insert into tbUser(sid,name,cname,pass) values('201805031409','诸葛亮','汉军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031410','刘备','汉军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031411','关羽','汉军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031412','张飞','汉军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031413','赵云','汉军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031414','周瑜','吴军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031415','孙权','吴军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031416','鲁肃','吴军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031417','孙尚香','吴军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031418','曹操','魏军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031419','张辽','魏军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031420','典韦','魏军','123456')
insert into tbUser(sid,name,cname,pass) values('201805031421','夏侯渊','魏军','123456')
select * from tbUser
--创建日记表
create table tbNote
(
  id int identity(1,1) primary key,--编号
  title varchar(50),--标题
  content varchar(500),--内容
  notedate varchar(20),--日期
  userid int--用户编号
)

select * from tbNote

源代文件码https://download.csdn.net/download/g_love_progammer/10390305(请使用sql server2008以上的版本

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值