实验一 基于Struts2的登录系统实现

这篇博客介绍了如何在J2EE环境下,利用Struts2框架搭建一个登录系统。主要内容包括配置Struts2框架,创建Dynamic Web Project,添加必要jar包,设置web.xml,编写login.jsp和success.jsp视图页面,实现业务逻辑组件LoginBean和控制器LoginAction,并在struts.xml中配置Action。最终,通过上机编码实现了登录系统,正确登录跳转到成功页面,否则留在登录页面。
摘要由CSDN通过智能技术生成

实验一 、基于Struts2的登录系统实现

J2EE应用开发

一、目的与任务
目的:熟悉在集成开发平台上配置Struts2框架,学习Struts2编程
任务:在集成开发平台上创建Struts2项目,实现登录系统
二、内容、要求与安排方式
1、实验内容与要求:
1)下载Struts2软件包并了解Struts2软件包中主要文件;
2)学习在集成开发平台上配置Struts2框架,熟悉Struts2框架编程;
3)实现基于Struts2的登录系统,若正确页面跳转到成功页面,不正确页面跳转到登录页面。
可选题:修改登录系统连接数据库,访问数据库判断输入的用户名和密码是否存在。
具体操作步骤:
1)在Eclipse for jee平台上创建Dynamic Web Project
2)添加Struts2框架常用jar包至项目lib文件夹,Struts2框架常用jar包有:commons-fileupload-1.2.2.jar、commons-io-2.0.1.jar、freemarker-2.3.16.jar、
javassist-3.11.0.GA.jar、ognl-3.0.1.jar、struts2-core-2.2.3.1.jar、xwork-core-2.2.3.1.jar
commons-lang3-3.1.jar、commons-logging-1.1.1.jar
3)在web.xml中配置核心控制器FilterDispatcher
4)编写视图组件login.jsp, success.jsp
5)编写登录页面对应的业务逻辑组件LoginBean类
6)编写业务控制器LoginAction.java
7)struts.xml中配置Action
8)项目部署和运行
2、实验安排方式:上机编码。
具体代码如下:

//1)在web.xml中配置核心控制器FilterDispatcher
 
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>ch01</display-name>
  
  <filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>*.action</url-pattern>
  </filter-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome
  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
1. 创建数据库 首先我们需要创建一个数据库,用于存储用户信息和登录记录。 创建一个名为`login_system`的数据库,然后创建两个表:`user`和`login_record`。 `user`表用于存储用户信息,包括用户名和密码。 ```sql CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` `login_record`表用于存储登录记录,包括登录时间和用户名。 ```sql CREATE TABLE `login_record` ( `id` int(11) NOT NULL AUTO_INCREMENT, `login_time` datetime NOT NULL, `username` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ``` 2. 配置数据库连接 在`struts.xml`中配置数据库连接信息。 ```xml <struts> <constant name="struts.convention.package.scan" value="com.example.action"/> <package name="login" extends="struts-default"> <action name="login" class="com.example.action.LoginAction"> <result name="success">/login_success.jsp</result> <result name="input">/login.jsp</result> </action> </package> <constant name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <constant name="hibernate.show_sql" value="true"/> <constant name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/> <constant name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/login_system"/> <constant name="hibernate.connection.username" value="root"/> <constant name="hibernate.connection.password" value=""/> <constant name="hibernate.hbm2ddl.auto" value="update"/> </struts> ``` 3. 编写实体类和DAO类 创建`User`和`LoginRecord`两个实体类,用于表示用户信息和登录记录。 ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; private String username; private String password; // getter and setter } @Entity @Table(name = "login_record") public class LoginRecord { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Temporal(TemporalType.TIMESTAMP) private Date loginTime; private String username; // getter and setter } ``` 创建`UserDAO`和`LoginRecordDAO`两个DAO类,用于操作数据库。 ```java public class UserDAO { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public User findByUsername(String username) { Session session = sessionFactory.getCurrentSession(); Query query = session.createQuery("FROM User WHERE username = :username"); query.setParameter("username", username); return (User) query.uniqueResult(); } } public class LoginRecordDAO { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { this.sessionFactory = sessionFactory; } public void add(LoginRecord record) { Session session = sessionFactory.getCurrentSession(); session.save(record); } public int count() { Session session = sessionFactory.getCurrentSession(); Query query = session.createQuery("SELECT COUNT(*) FROM LoginRecord"); return ((Long) query.uniqueResult()).intValue(); } } ``` 4. 编写Action类 创建`LoginAction`类,用于处理登录请求。 ```java public class LoginAction extends ActionSupport { private String username; private String password; private UserDAO userDAO; private LoginRecordDAO loginRecordDAO; public void setUserDAO(UserDAO userDAO) { this.userDAO = userDAO; } public void setLoginRecordDAO(LoginRecordDAO loginRecordDAO) { this.loginRecordDAO = loginRecordDAO; } public String execute() { User user = userDAO.findByUsername(username); if (user == null || !user.getPassword().equals(password)) { return INPUT; } LoginRecord record = new LoginRecord(); record.setLoginTime(new Date()); record.setUsername(username); loginRecordDAO.add(record); int count = loginRecordDAO.count(); ServletActionContext.getRequest().setAttribute("count", count); return SUCCESS; } // getter and setter } ``` 5. 编写JSP页面 创建`login.jsp`页面,用于显示登录表单。 ```html <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Login</title> </head> <body> <h1>Login</h1> <s:form action="login"> <s:textfield name="username" label="Username"/> <s:password name="password" label="Password"/> <s:submit value="Login"/> </s:form> </body> </html> ``` 创建`login_success.jsp`页面,用于显示登录成功信息。 ```html <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Login Success</title> </head> <body> <h1>Welcome, ${username}!</h1> <p>You are the ${count}th user to log in.</p> </body> </html> ``` 6. 运行程序 启动Tomcat服务器,访问`http://localhost:8080/login_system/login.jsp`,输入正确的用户名和密码,即可登录成功,显示登录用户的用户名和是第几位登录的用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值