1.创建数据表,与servlet中相同
2.创建web项目,添加struts2模块,url 选 /*,web.xml中会自动注册struts2,同时src下会自动生成struts2配置文件struts.xml
3.创建JDBC以及两个pojo类
4.编写登录页面login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>登录页面</title> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <s:form action="LoginAction" method="post" theme="simple"> <table> <caption>用户登录</caption> <tr> <td>用户名</td> <td> <s:textfield name="user.username" size="20" /> </td> </tr> <tr> <td>密码</td> <td> <s:password name="user.password" size="20" /> </td> </tr> </table> <s:submit value="提交" /> <s:reset value="重置" /> <input type="button" value="注册" /> </s:form> </body> </html>
5.编写LoginAction,并配置struts.xml
public class LoginAction extends ActionSupport{ private UserTable user; public String execute() throws Exception{ ActionContext context=ActionContext.getContext(); Map session=context.getSession(); String username=user.getUsername(); String password=user.getPassword(); boolean validated=false; UserTable validatedUser=null; SqlserverDBConn DBConn=new SqlserverDBConn(); String sql="select * from TEST..userTable"; ResultSet rs=DBConn.executeQuery(sql); while(rs.next()){ if(rs.getString("username").equals(username)&&rs.getString("password").equals(password)){ validatedUser=new UserTable();
validatesUser.setId(rs.getInt(1)); validatedUser.setUsername(username); validatedUser.setPassword(password); session.put("user", validatedUser); validated=true; } } if(validated){ List<LyTable> al=new ArrayList(); String listSql="select * from TEST..lyTable"; rs=DBConn.executeQuery(listSql); LyTable ly=null; while(rs.next()){ ly=new LyTable(); ly.setId(rs.getInt(1)); ly.setUserId(rs.getInt(2)); ly.setDate(rs.getDate(3)); ly.setTitle(rs.getString(4)); ly.setContent(rs.getString(5)); al.add(ly); } rs.close(); DBConn.closeStmt(); DBConn.closeConn(); session.put("al", al); return SUCCESS; } else{ return ERROR; } } public UserTable getUser() { return user; } public void setUser(UserTable user) { this.user = user; } }
struts.xml
<struts>
<package name="strutsPackage" extends="struts-default">
<action name="LoginAction" class="org.action.LoginAction">
<result name="success">main.jsp</result>
</action>
</package>
</struts>
6.编写main.jsp
<html> <head> <title>留言板信息</title> </head> <body> <s:form action="add.jsp" method="post" theme="simple"> <table border="1"> <caption>留言信息</caption> <tr> <th>留言人姓名</th> <th>留言时间</th> <th>留言标题</th> <th>留言内容</th> </tr> <% SqlserverDBConn DBConn=new SqlserverDBConn(); Connection conn=DBConn.getConnection(); PreparedStatement pstmt=null; List<LyTable> al=(List<LyTable>)session.getAttribute("al"); Iterator it=al.iterator(); while(it.hasNext()){ LyTable ly=(LyTable)it.next(); String username=null; String sql="select username from TEST..userTable where id=?"; pstmt=conn.prepareStatement(sql); pstmt.setInt(1, ly.getUserId()); ResultSet rs=pstmt.executeQuery(); //String username=rs.getString(1); while(rs.next()){ username=rs.getString(1); } %> <tr> <td><%=username%></td> <td><%=ly.getDate() %></td> <td><%=ly.getTitle() %></td> <td><%=ly.getContent() %></td> </tr> <% } %> </table> <s:submit value="添加留言" /> </s:form> </body> </html>
7.编写register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>注册</title> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <s:form action="RegisterAction" method="post" theme="simple"> <table> <caption>用户注册</caption> <tr> <td>用户名</td> <td> <s:textfield name="user.username" /> </td> </tr> <tr> <td>密码</td> <td><s:password name="user.password" /></td> </tr> </table> <s:submit value="确认" /> <s:reset value="重置" /> </s:form> </body> </html>
8.RegisterAction
public class RegisterAction extends ActionSupport{ private UserTable user=null; public String execute(){ ActionContext context=ActionContext.getContext(); Map session=context.getSession(); SqlserverDBConn DBConn=new SqlserverDBConn(); Connection conn=DBConn.getConnection(); String sql="insert into TEST..userTable (username,password) values(?,?)"; PreparedStatement pstmt=null; try { pstmt = conn.prepareStatement(sql); pstmt.setString(1, user.getUsername()); pstmt.setString(2, user.getPassword()); if(user!=null){ pstmt.executeUpdate(); } pstmt.close(); DBConn.closeConn(); return SUCCESS; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); return ERROR; } } public UserTable getUser() { return user; } public void setUser(UserTable user) { this.user = user; } }
***一定要加user的get/set方法否则会报错
9.add.jsp
<html> <head> <title>添加留言</title> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <s:form action="AddAction" method="post" theme="simple"> <table border="1"> <caption>添加留言</caption> <tr> <td>留言标题</td> <td> <s:textfield name="ly.title" /> </td> </tr> <tr> <td>留言内容</td> <td> <s:textarea name="ly.content" rows="10" cols="20"></s:textarea> </td> </tr> </table> <s:submit value="添加" /> <s:reset value="重置" /> </s:form> </body> </html>
10.AddAction
public class AddAction extends ActionSupport{ private LyTable ly; public String execute(){ ActionContext context=ActionContext.getContext(); Map session=context.getSession(); String title=ly.getTitle(); String content=ly.getContent(); UserTable user=null; user=(UserTable)session.get("user"); LyTable ly=new LyTable(); ly.setUserId(user.getId()); ly.setDate(new Date(System.currentTimeMillis()));
//ly.setTitle(ly.getTitle())似乎有错 ly.setTitle(title); ly.setContent(content); List<LyTable> al=(List<LyTable>)session.get("al"); al.add(ly); SqlserverDBConn DBConn=new SqlserverDBConn(); String sql="insert into TEST..lyTable (userId,date,title,content) values(?,?,?,?)"; PreparedStatement pstmt=null; Connection conn=DBConn.getConnection(); try { pstmt=conn.prepareStatement(sql); pstmt.setInt(1, ly.getUserId()); pstmt.setDate(2, ly.getDate()); pstmt.setString(3, ly.getTitle()); pstmt.setString(4, ly.getContent()); pstmt.executeUpdate(); pstmt.close(); DBConn.closeConn(); return SUCCESS; } catch (SQLException e) { e.printStackTrace(); return ERROR; } } public LyTable getLy() { return ly; } public void setLy(LyTable ly) { this.ly = ly; } }
***
//ly.setTitle(ly.getTitle())似乎有错