Struts2 --简单留言系统
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 --简单留言系统的更多相关文章
- 使用Struts2和jQuery EasyUI实现简单CRUD系统(转载汇总)
使用Struts2和jQuery EasyUI实现简单CRUD系统(一)——从零开始,ajax与Servlet的交互 使用Struts2和jQuery EasyUI实现简单CRUD系统(二)——aja ...
- php建立简单的用户留言系统
php建立简单的用户留言系统 样例 addMsg.php--添加留言页面 doAction.php--响应添加留言页面 . viewMsg.php--显示留言页面 目录结构 addMsg.php--添 ...
- cookie的简单留言框
我们在网页浏览时退出后,再次进入时会有上次的记录,这就用的上cookie属性了,cookie就是服务器暂存放在你计算机上的一笔资料,好让服务器用来辨认你的计算机.当你在浏览网站的时候,Web服务器会先 ...
- .Net简单图片系统-简介
系统简介 最近做了一个简单图片系统,这个系统就是 将上传的的图片保存到系统本地文件系统或者基于fastdfs的分布式文件系统中,在查看图片时会直接请求此系统或者fastdfs的tracker服务器(需 ...
- 用Qt写软件系列三:一个简单的系统工具(上)
导言 继上篇<用Qt写软件系列二:QIECookieViewer>之后,有一段时间没有更新博客了.这次要写的是一个简单的系统工具,需求来自一个内部项目.功能其实很简单,就是查看当前当前系统 ...
- 一步步学习PHP笔记(李炎恢瓢城web俱乐部-多用户留言系统)01
本课:div+css实现首页效果: 开发工具:xampp + phpstorm 笔记目的:仅做记录使用,方便日后查看 代码目录结构: index.php: <?php define(" ...
- Ubuntu学习笔记-win7&Ubuntu双系统简单搭建系统指南
win7&Ubuntu双系统简单搭建系统指南 本文是自己老本子折腾Ubuntu的一些记录,主要是搭建了一个能够足够娱乐(不玩游戏)专注练习自己编程能力的内容.只是简单的写了关于系统的安装和一些 ...
- python实现简单购物车系统(练习)
#!Anaconda/anaconda/python #coding: utf-8 #列表练习,实现简单购物车系统 product_lists = [('iphone',5000), ('comput ...
- 学习笔记:Vue+Node+Mongodb 构建简单商城系统(二)
前面几个月工作有点忙,导致构建简单商城系统的计划搁置近三个月.现在终于有时间重新回过头来继续本计划.本篇主要记录自己在阿里云服务器上搭建node运行环境的整个过程,以及对其中遇到的一些问题的思考. 一 ...
随机推荐
- ES5新增数组方法
forEach/map every/some indexOf/lastIndexOf filter reduce Array.isArray
- Python __slots__的使用
每个类在实例化时都会被分配一个dict,通过 实例.__dict__来访问,dict记录了实例的所有属性 如: class Man(object): pass man = Man()print(man ...
- zabbix--3.0--1
实验环境 实验用2到2台机器,实验所用机器系统环境如下,可以看到2台机器的主机名和IP地址 [root@linux-node1 ~]# cat /etc/redhat-release CentOS L ...
- MongoDB journal与oplog解惑
journal journal 是 MongoDB 存储引擎层的概念,目前 MongoDB主要支持 mmapv1.wiredtiger.mongorocks 等存储引擎,都支持配置journal. M ...
- DNS压力测试
安装 queryperf cd /usr/local/src wget http://ftp.isc.org/isc/bind9/9.12.1/bind-9.12.1.tar.gz 编译querype ...
- composer 安装yii2 The package is not available in a stable-enough version解决办法
错误 Potential causes: - A typo in the package name - The package is not available in a stable-enough ...
- Hanlp分词实例:Java实现TFIDF算法
算法介绍 最近要做领域概念的提取,TFIDF作为一个很经典的算法可以作为其中的一步处理. 关于TFIDF算法的介绍可以参考这篇博客http://www.ruanyifeng.com/blog/2013 ...
- hadoop行业技术创新解决方案
如今有很多公司都在努力挖掘他们拥有的大量数据,包括结构化.非结构化.半结构化以及二进制数据等,来探索对数据的深入利用. 大多数公司估计他们只分析了已有数据的12%,剩余88%还没有被充分利用.大量的数 ...
- 三重DEC加密在java中的实现
代码可以直接拷走使用,一些约定例如向量可以自行变动 引言 如今手机app五彩缤纷,确保手机用户的数据安全是开发人员必须掌握的技巧,下面通过实例介绍DES在android.ios.java平台 ...
- JavaMail SMTP服务器发送邮件程序示例 java通过dns服务器解析ip地址
/** * JavaMail SMTP服务器发送邮件程序示例 * 扮演SMTP服务器角色与邮件客户端软件最大的区别就是: * SMTP服务器需要解析不同接收人邮件地址主机名对应的SMTP服务器主机名 ...