项目开发---实现注册功能

接下就要用到Struts框架了,再用之前先配置好有关操作

1.在web.xml设置前端配置器

2.在src下新建struts.xml

3.写好首页jsp:

4.配置好struts

5.开发好action类

1.在web.xml设置前端配置器

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<display-name></display-name> <!-- 配置Struts2的前端控制器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

2.在src下新建struts.xml

3.首页jsp:

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>用户信息管理</title>
</head> <body style="text-align: center;">
<h4>用户信息管理</h4>
<a href="${pageContext.request.contextPath }/user_addui.action" target="body">注册用户</a>
<a href="${pageContext.request.contextPath }/user_list.action" target="body">用户列表</a>
<!-- 这里 user_addui这样命名是有很大意义的,是让struts.xml配置的可以用通配符,接下来会讲-->
</body>
</html>

图片实例:

4.struts.xml

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<!-- 配置常量信息 -->
<constant name="struts.devMode" value="true"></constant>
<!-- 注意到没 user_*,后面的{1}就是代表前面的内容,前面如果是addui那后面就执行addui方法,这样就可以一个action实现多个方法-->
<package name="struts2" extends="struts-default" >
<action name="user_*" class="com.study.user.action.UserAction" method="{1}">
<result name="uiSUCCESS" type="dispatcher">/jsp/register.jsp</result>
<result name="addSUCCESS" type="redirectAction">user_list</result>
<!--redirectAction :redirectAction将请求重定向到另一个action等于在运行 <action name="user_list"
class="com.study.user.action.UserAction" method="list">,注册好后直接显示所有用户信息 -->
<result name="listSUCESS" type="dispatcher">/jsp/listuser.jsp</result>
<result name="delSUCESS" type="dispatcher">/jsp/listuser.jsp</result>
<result name="updateSUCESS" type="dispatcher">/jsp/register.jsp</result>
<!--uiSUCCESS调到的是一个注册界面, addSUCCESS当到注册界面当你填完信息后,点击注册把数据保存到数据库,在跳转到显示所有产品界面, -->
<!--listSUCESS到了用户列表界面,显示所有用户信息。delSUCESS删除信息后还是跳转到显示所有用户界面。
updateSUCESS更新的时候跳转到注册界面并且回显数据 -->
</action>
</package>
</struts>

 5.开发好aciton类 这个和servlet有个很大的好处就是能够实现一个action可以实现多个方法

 import java.util.List;
import java.util.UUID; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.study.user.model.User;
import com.study.user.service.UserService;
import com.study.user.service.impl.UserServiceImpl;
import com.study.user.utils.Globals; public class UserAction extends ActionSupport implements ModelDriven<User> { private User user = new User(); private UserService service =new UserServiceImpl(); public User getModel() {
return user;
}
/*
* 注册界面
*/
public String addui() throws Exception { // 模拟读取配置文件 设置信息
//因为我的兴趣爱好的类型不是写在jsp界面的,而是写在java类中,目的也是为了后期更好的维护,所以要把它们返回的jsp界面
ServletActionContext.getRequest().setAttribute("preferences", Globals.preferences);
ServletActionContext.getRequest().setAttribute("types", Globals.types); return "uiSUCCESS";
}
/*
* 把对象保存到数据库中
*/
public String add() throws Exception {
//通过uuid新建一个自动创建一个id
user.setId(UUID.randomUUID().toString());
service.addUser(user); return "addSUCCESS"; }
/*
* 回显所有用户信息
*/
public String list() throws Exception{
List<User> users =service.getAll(); ServletActionContext.getRequest().setAttribute("users", users);
return "listSUCESS";
}
/*
* 删除某一个用户
*/
public String del() throws Exception{
String id= ServletActionContext.getRequest().getParameter("id");
service.del(id); //这里是删除掉这条用户
List<User> users =service.getAll(); //下面是为了把剩余的还显示在当前页面
ServletActionContext.getRequest().setAttribute("users", users);
return "delSUCESS";
}
/*
* 更新用户
*/
public String update() throws Exception{
//先通过id获得user对象
String id= ServletActionContext.getRequest().getParameter("id");
User user=service.find(id);
//再把对象转发到注册界面用于回显信息
ServletActionContext.getRequest().setAttribute("user", user);
//因为兴趣爱好也是写在java类中,所以需要在放到域中,用于回显
ServletActionContext.getRequest().setAttribute("preferences", Globals.preferences);
ServletActionContext.getRequest().setAttribute("types", Globals.types);
return "updateSUCESS";
}
}

项目(1)----用户信息管理系统(4)---(struts开发)的更多相关文章

  1. 项目(1)----用户信息管理系统(5)---(剩余jsp界面)

    完成剩余jsp界面 首页界面前面我写了,接下来还有就是一个显示所有用户界面 1:注册界面 2:显示所有用户信息界面 1:注册界面 <%@ page language="java&quo ...

  2. 谈一谈个人利用Java的mysql的知识完成的数据库的项目-----用户信息管理系统

    首先,我先简述一下自己做的过程啊,相信大家来找这样的博客,也都是为了完成自己课程任务吧.我也一样是一名大一的学生,是为了自己的课程任务而开始做数据库的项目的.因为还没学mysql吗,所以是自己找视频啊 ...

  3. qt项目:员工信息管理系统

    开发一个员工信息管理系统 一.项目具体要求: 1.用qt开发界面,数据库用QSqlite 数据库文件名:demostudent.db 2.通过界面能够查看到数据库中员工信息表中内容,包括员工姓名.年龄 ...

  4. (๑•̀ㅂ•́)و✧QQ用户信息管理系统

    这是第二篇文章,就直接切主题 这次剖析的也是自己的作业之一:QQ信息管理系统 一:(此处省略了建Proarams类,其实目的只是想强调把连接语句单独放一个类里更容易调用,命名规范如图) 二:(导入SQ ...

  5. 开源项目CIIP(企业信息管理系统框架).2018.0904版更新介绍

    源码: https://github.com/tylike/CIIP https://gitee.com/ciip/CIIP 一,CIIP的目标是什么? 更加简单,快速的建立信息类管理系统.让实施人员 ...

  6. C语言项目(一):学生信息管理系统

    实现方式:链表 结构定义 1 typedef struct MyStu MyStudent; 2 typedef struct node Node; 3 typedef Node *pNode; 4 ...

  7. 开源项目CIIP(企业信息管理系统框架).2018.1.0910版更新介绍-上周工作总结

    又狂撸了一周的代码.简化了0904版本的多数操作. 上一次更新时,总共需要10步,这次简化成3步.嗯嗯,自我感觉不错. 重要的:在创建项目时,可以选择常用模块啦! 第一步:启动CIIP.Designe ...

  8. 简易商品信息管理系统——首个Web项目

    正文之前 在学习了一段时间的Java Web的内容之后,当然需要有个项目来练练手,我相信大多数人的首选项目都是信息管理系统吧,所以我选择了商品信息管理系统 目前项目源码已全部上传至GitHub,欢迎大 ...

  9. 使用mybatis开发Dao的原始方法,实现根据用户id查询一个用户信息 、根据用户名称模糊查询用户信息列表 、添加用户信息等功能

    1.需求 将下边的功能实现Dao: 根据用户id查询一个用户信息 根据用户名称模糊查询用户信息列表 添加用户信息 2. 原始Dao开发方法需要程序员编写Dao接口和Dao实现类 3.User.xml映 ...

随机推荐

  1. sysbench

    安装 http://www.cnblogs.com/zhoujinyi/archive/2013/04/19/3029134.html http://space.itpub.net/758322/vi ...

  2. [C#]使用dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行

    本文为原创文章.源代码为原创代码,如转载/复制,请在网页/代码处明显位置标明原文名称.作者及网址,谢谢! 本文使用的工具下载地址为: https://github.com/cnxy/dnSpy/arc ...

  3. webapp填坑记录[更新中]

    网上也有许多的 webapp 填坑记录了,这几个月,我在公司正好也做了2个,碰到了一些问题,所以我在这里记录一下我所碰到的问题: meta 头部声明在开发的时候,刚刚创建 HTML 文件,再使用浏览器 ...

  4. 了解Python列表的一些方法

    首先定义一个名字列表,然后使用print() BIF在屏幕上显示这个列表. 接下来,使用len() BIF得出列表中有多少个数据项,然后再访问并显示第2个数据项的值: 创建了列表之后,可以使用列表方法 ...

  5. mysql步骤详解

    一.配置MySQL数据库 1.解压绿色版mysql,并改名为mysql5.7,如下图 对比一下下图5.6以前的版本,少data目录(存放数据)和my-default.ini文件(配置信息) 二.安装服 ...

  6. dSYM文件分析

    什么是 dSYM 文件 Xcode编译项目后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编 ...

  7. Qt颜色下拉框

    上周为了用Qt写一个类似颜色下拉框的东西,查阅了网上的多数相关资料,依然没有我想要的.终于在周四的时候下定决心重写QCombobox类来实现功能,现在把它贴出来,望看到的人,批评指正.废话不多说,先上 ...

  8. 【javaFX学习】(一) 建一个简单的界面

    转载注明出处:http://www.cnblogs.com/lensener/p/7976953.html 用过swing都知道有多蛋疼,界面有多丑.自从用了javaFX,腰也不酸了,腿也不疼了. 废 ...

  9. php数据分页显示基础

    一:分页原理: 所谓分页显示,也就是将数据库中的结果集认为的分成一段一段的来显示,需要两个初始的参数: 每页多少条记录 ($PageSize)? 当前是第几页($CurrentPageID)? 还有其 ...

  10. WCF、WebAPI、WCFREST、WebService之间的区别和选择

    转载翻译,原文:http://www.dotnet-tricks.com/Tutorial/webapi/JI2X050413-Difference-between-WCF-and-Web-API-a ...