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())似乎有错

Struts2 --简单留言系统的更多相关文章

  1. 使用Struts2和jQuery EasyUI实现简单CRUD系统(转载汇总)

    使用Struts2和jQuery EasyUI实现简单CRUD系统(一)——从零开始,ajax与Servlet的交互 使用Struts2和jQuery EasyUI实现简单CRUD系统(二)——aja ...

  2. php建立简单的用户留言系统

    php建立简单的用户留言系统 样例 addMsg.php--添加留言页面 doAction.php--响应添加留言页面 . viewMsg.php--显示留言页面 目录结构 addMsg.php--添 ...

  3. cookie的简单留言框

    我们在网页浏览时退出后,再次进入时会有上次的记录,这就用的上cookie属性了,cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机.当你在浏览网站的时候,Web服务器会先 ...

  4. .Net简单图片系统-简介

    系统简介 最近做了一个简单图片系统,这个系统就是 将上传的的图片保存到系统本地文件系统或者基于fastdfs的分布式文件系统中,在查看图片时会直接请求此系统或者fastdfs的tracker服务器(需 ...

  5. 用Qt写软件系列三:一个简单的系统工具(上)

    导言 继上篇<用Qt写软件系列二:QIECookieViewer>之后,有一段时间没有更新博客了.这次要写的是一个简单的系统工具,需求来自一个内部项目.功能其实很简单,就是查看当前当前系统 ...

  6. 一步步学习PHP笔记(李炎恢瓢城web俱乐部-多用户留言系统)01

    本课:div+css实现首页效果: 开发工具:xampp + phpstorm 笔记目的:仅做记录使用,方便日后查看 代码目录结构: index.php: <?php define(" ...

  7. Ubuntu学习笔记-win7&Ubuntu双系统简单搭建系统指南

    win7&Ubuntu双系统简单搭建系统指南 本文是自己老本子折腾Ubuntu的一些记录,主要是搭建了一个能够足够娱乐(不玩游戏)专注练习自己编程能力的内容.只是简单的写了关于系统的安装和一些 ...

  8. python实现简单购物车系统(练习)

    #!Anaconda/anaconda/python #coding: utf-8 #列表练习,实现简单购物车系统 product_lists = [('iphone',5000), ('comput ...

  9. 学习笔记:Vue+Node+Mongodb 构建简单商城系统(二)

    前面几个月工作有点忙,导致构建简单商城系统的计划搁置近三个月.现在终于有时间重新回过头来继续本计划.本篇主要记录自己在阿里云服务器上搭建node运行环境的整个过程,以及对其中遇到的一些问题的思考. 一 ...

随机推荐

  1. 重写( override)and 重载(overload)

    重写override:是子类对父类的允许访问的方法的实现过程的重新编写,名字,返回值和形参都不能改变,即外壳不变,内心更改 重载overload:同一个类里面的方法,名字相同而参数不同,返回值可以相同 ...

  2. 自动化部署--shell脚本--2

    node1和node2都装apache   [root@linux-node1 ~]# yum install httpd -y Loaded plugins: fastestmirror Loadi ...

  3. [转]DB2中需要REORG操作的几种情况

    问题: 在DB2数据库中,修改完表的结构时,是否需要对表做一个reorg操作才能使表的状态恢复正常? 答:有以下4种操作,需要对表做reorg操作 1. SET DATA TYPE altered-d ...

  4. 在浏览器中输入url回车之后会发生什么

    在浏览器中输入URL之后,浏览器会经历以下5个步骤: 1.解析URL 2.DNS域名解析 3.浏览器与网站建立TCP链接(三次握手) 4.请求和传输数据 5.浏览器渲染页面 一.解析URL 什么是ur ...

  5. mysql 的 help 命令:每个命令,都有相应的反斜杠(\)加一个字母或字符的简写

    mysql> help For information about MySQL products and services, visit: http://www.mysql.com/ For d ...

  6. npx:npm包执行器

    npx 作用: 单次执行命令而不需要安装到本机 执行依赖包里的二进制文件 使用不同版本的 node 利用 npx 可以下载模块这个特点,可以指定某个版本的 Node 运行脚本.它的窍门就是使用 npm ...

  7. echarts x轴文字显示不全(xAxis文字倾斜比较全面的3种做法值得推荐)

    出处:http://blog.csdn.net/kebi007/article/details/68488694

  8. PHP实现IP访问限制及提交次数的方法详解

    一.原理 提交次数是肯定要往数据库里写次数这个数据的,比如用户登陆,当用户出错时就忘数据库写入出错次数1,并且出错时间,再出错写2,当满比如5次时提示不允许再登陆,请明天再试,然后用DateDiff计 ...

  9. 配置中心Server端

    为什么需要统一配置中心 1.不方便维护.一个功能被多个人开发,如果其中一个人修改了配置文件,另外一个人测试之前的功能,准备使用之前的配置. 2.配置内容安全与权限.线上的配置是不会对开发公开,特别是数 ...

  10. jQuery 筛选器 链式编程操作

    $('#i1').next() 下一个标签$('#i1').nextAll() 兄弟标签中,所有下一个标签$('#i1').nextUntil('#ii1') 兄弟标签中,从下一个标签到id为ii1的 ...