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运行环境的整个过程,以及对其中遇到的一些问题的思考. 一 ...
随机推荐
- php7 php-fpm 重启
PHP7中php.ini.php-fpm和www.conf的配置 http://www.tuicool.com/articles/NjmQNj6 php-fpm 关闭: kill -SIGINT ` ...
- CloudStack学习-3
此次试验主要是CloudStack结合openvswitch 背景介绍 之所以引入openswitch,是因为如果按照之前的方式,一个网桥占用一个vlan,假如一个zone有20个vlan,那么岂不是 ...
- c#与C++类型转换网摘
转载自 C++和C#转换 https://www.cnblogs.com/zjoch/p/4147182.html c#与C++类型转换,网摘 //c++:HANDLE(void *) ...
- 在vue-cli 2.x 项目中,引入stylus的全局CSS变量
出处:https://blog.csdn.net/weixin_39378610/article/details/81140358
- VMware虚拟机里centos7下安装mysql5.6并授权远程连接Navicat
这节来安装Mysql5.6,并远程授权连接本地windows的Navicat,可以根据以下步骤安装.此文章为自己收藏,必要时拿出来直接用的,有需要的友友可以查看查看的.文章图片有借助于网络的. 1.新 ...
- HanLP中人名识别分析详解
HanLP中人名识别分析详解 在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: l ·名字识别的问题 #387 l ·机 ...
- MySQL程序只mysqlbinlog详解
mysqlbinlog命令详解 mysqlbinlog用于处理二进制的日志文件,如果想要查看这些日志文件的文本内容,就需要使用mysqlbinlog工具 用法: mysqlbinlog [option ...
- 日期控件My97 DatePicker 的使用
1.解压后添加My97DatePicker文件夹 2.引入WdatePicker.js文件 日期控件My97DatePicker的使用.html <!DOCTYPE html> <h ...
- jpa随笔
1对多的关系 //多的一方@Entity @Table(name="car_distribute") public class DistributeCar extends Cust ...
- HD-SDI制式学习
HD-SDI制式学习 1.资料来源(XAPP514) 2.HD-SDI相关知识 需要注意的是每一行的开始为EAV,序列依次为:EAV Blank Video 3.XYZ的格式 4.Line numbe ...