概述Java的struts2框架
简介
Java的struts2框架是一个MVC(Model-View-Controller)模式的Web框架,它借鉴了许多JSP/Servlet和Struts的优点,同时也做了很多改进,达到了更优秀的Web应用开发效果。struts2框架可以很好的帮助开发人员快速搭建Web应用程序,并且可以方便地进行功能扩展和维护。
struts2框架提供了很多实用、高效、易用的功能,有很好的活动记录、国际化支持、表单验证、注解等特性。此外,struts2框架还拥有良好的体系结构,可以很好的进行配置和扩展,同时支持Spring、Hibernate、MyBatis等流行的开源框架。
如何使用
下面我们来介绍如何在Java Web应用中使用Struts2框架,整个过程主要分为以下几个步骤:
- 引入Struts2依赖
Struts2框架需要在Maven或Gradle中引入相应的依赖,或者手动把Jar包复制到项目中。这里以Maven为例,在pom.xml中添加如下配置:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.5.26</version>
</dependency>
- 配置Struts2
在项目的src/main/resouces目录下创建一个名为struts.xml的配置文件,该文件用于配置拦截器和对应的Action。
示例配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" extends="struts-default">
<action name="hello" class="com.example.HelloWorldAction">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>
- 创建Action
在Java源码中创建一个名为HelloWorldAction的Class,实现自己的业务逻辑。
示例代码:
package com.example;
public class HelloWorldAction {
private String message;
public String execute() throws Exception {
setMessage("Hello Struts2");
return "success";
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
- 搭建Web
在Web目录下创建一个名为hello.jsp的JSP文件,用于展示我们的业务逻辑数据。
示例代码:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World</title>
</head>
<body>
<h1><s:property value="message" /></h1>
</body>
</html>
- 运行测试
最后一步是运行我们的Web应用程序,访问http://localhost:8080/应用程序名称/hello.action
,就可以看到我们的“Hello Struts2”页面了。
示例1
下面介绍一个简单的登陆验证的例子,来认识下Struts2的基本概念和流程。
步骤:
- 配置struts.xml
<action name="login" class="com.example.LoginAction" method="execute">
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
<result name="input">/login.jsp</result>
</action>
- 创建LoginAction类
public class LoginAction {
private String username;
private String password;
public String execute() {
if ("admin".equals(username) && "123456".equals(password)) {
return "success";
} else {
return "error";
}
}
// 省略setter和getter方法
}
- 创建login.jsp
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<head>
<title>登录</title>
<meta charset="UTF-8">
</head>
<body>
<s:form action="login">
<s:textfield name="username" label="用户名"></s:textfield>
<s:password name="password" label="密 码"></s:password>
<s:submit value="登 录"></s:submit>
</s:form>
</body>
</html>
- 创建success.jsp和error.jsp
success.jsp与error.jsp的代码内容可以自行编写。
示例2
下面介绍一个简单的CRUD操作的例子,来认识下Struts2的操作实践。
步骤:
- 配置struts.xml
<package name="default" extends="struts-default">
<action name="list" class="com.example.UserAction" method="list">
<result name="success">/user/list.jsp</result>
</action>
<action name="input" class="com.example.UserAction" method="input">
<result name="success">/user/edit.jsp</result>
</action>
<action name="save" class="com.example.UserAction" method="save">
<result name="success" type="redirectAction">list</result>
</action>
<action name="edit" class="com.example.UserAction" method="edit">
<result name="success">/user/edit.jsp</result>
</action>
<action name="delete" class="com.example.UserAction" method="delete">
<result name="success" type="redirectAction">list</result>
</action>
</package>
- 创建UserAction类
public class UserAction extends ActionSupport implements ModelDriven<User> {
private User user;
private List<User> userList;
private UserService userService;
private Long id;
public void setUserService(UserService userService) {
this.userService = userService;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
public String list() {
userList = userService.findAllUsers();
return SUCCESS;
}
public String input() {
return SUCCESS;
}
public String edit() {
user = userService.findById(id);
return SUCCESS;
}
public String save() {
userService.save(user);
return SUCCESS;
}
public String delete() {
userService.delete(id);
return SUCCESS;
}
public User getModel() {
if (user == null) {
user = new User();
}
return user;
}
public void prepare() throws Exception {
if (id != null) {
user = userService.findById(id);
}
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
- 创建edit.jsp和list.jsp
edit.jsp和list.jsp的内容可以自行编写。
- 创建UserService类
UserService是一个服务类,用于实现User的CRUD操作。
示例代码:
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
@Override
public User findById(Long id) {
return userDao.findById(id);
}
@Override
public void save(User user) {
userDao.save(user);
}
@Override
public void delete(Long id) {
userDao.delete(id);
}
@Override
public List<User> findAllUsers() {
return userDao.findAllUsers();
}
}
- 创建UserDao类
UserDao是一个数据访问层,用于访问数据库。
示例代码:
public class UserDaoImpl implements UserDao {
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public User findById(Long id) {
return (User) sessionFactory.getCurrentSession().get(User.class, id);
}
@Override
public void save(User user) {
sessionFactory.getCurrentSession().saveOrUpdate(user);
}
@Override
public void delete(Long id) {
sessionFactory.getCurrentSession().createQuery("delete from User where id=?")
.setParameter(0, id).executeUpdate();
}
@SuppressWarnings("unchecked")
@Override
public List<User> findAllUsers() {
return sessionFactory.getCurrentSession().createCriteria(User.class).list();
}
}
- 配置spring.xml
在spring.xml文件中配置相关Bean定义。
示例代码:
<bean id="userDao" class="com.example.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="userService" class="com.example.UserServiceImpl">
<property name="userDao" ref="userDao"/>
</bean>
以上就是Struts2的一个简单的CRUD操作示例代码。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:概述Java的struts2框架 - Python技术站