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运行环境的整个过程,以及对其中遇到的一些问题的思考. 一 ...
随机推荐
- SAS笔记
SAS基础知识 SAS里面的PROC一览 The ACECLUS Procedure : 聚类的协方差矩阵近似估计(approximate covariance estimation for clus ...
- 最大值最小值(max,max_element)
min 如果比不出大小就返回第一个引数 //版本一:调用operator< template <class LessThanComparable> const LessThanCom ...
- 集成学习之AdaBoost
AdaBoost 当做出重要决定时,大家可能会考虑吸取多个专家而不只是一个人的意见,机器学习也是如此,这就是集成学习的基本思想.使用集成方法时有多种形式:可以是不同算法的集成,也可以是同一算法在不同设 ...
- DocFetcher 本机文件搜索工具
优点: 支持的文件类型多 全文搜索 可以随时update索引
- linux项目部署常用命令
原文出处:http://blog.csdn.net/u013628152/article/details/45847013 1:执行命令#find / -name tomcat,系统将列出所有tomc ...
- GetClass与RegisterClass的应用一例
利用GetClass与RegisterClass可以实现根据字符串来实例化具体的子类,这对于某些需要动态配置程序的场合是很有用的.其他的应用如子窗体切换,算法替换等都能得到应用. unit Examp ...
- HTML5 Canvas水波纹动画特效
HTML5的Canvas特性非常实用,我们不仅可以在Canvas画布上绘制各种图形,也可以制作绚丽的动画,比如这次介绍的水波纹动画特效.以前我们也分享过一款基于HTML5 WebGL的水波荡漾动画,让 ...
- T-SQL select语句连接两个表
当一个表中按条件出现多个记录时,会按照匹配条件生成多个结果记录.left out 和right out 是对不能匹配的记录发生作用.
- SQL优化系列——查询优化器
大多数查询优化器将查询计划用“计划节点”树表示.计划节点封装执行查询所需的单个操作.节点被布置为树,中间结果从树的底部流向顶部.每个节点具有零个或多个子节点 - 这些子节点是输出作为父节点输入的节点. ...
- 自动化 数据分离 --A文件里面的类 中的函数 调用 B文件里面类 的函数 的方法
记录: bb 要实例化 self.dr=dr,那么 iber_test类的 self.dr 才能带过去