Java主流框架學習入門教程
本文详细介绍了Java主流框架学习的入门教程,涵盖了Spring、MyBatis、Hibernate和Struts2等框架的基础知识和实战应用。文章从Java基础回顾开始,逐步深入讲解各个框架的核心特性和配置方法。通过实际案例,展示了如何将这些框架整合到一个完整的Web应用项目中。通过本文,读者可以全面了解并掌握Java主流框架的使用技巧。
Java主流框架学习入门教程 Java基础回顾Java语言基础
Java是一种面向对象、跨平台的编程语言。Java程序结构清晰,易于编写和维护。Java程序一般由类(class)、方法(method)和变量(variable)构成。
变量与类型
Java中常见的数据类型包括基本类型(Primitive Types)和引用类型(Reference Types)。基本类型包括整型、浮点型、字符型和布尔型等。引用类型则是指对象和数组等。
// 基本类型示例
int age = 25;
float height = 1.75f;
char letter = 'A';
boolean isAdult = true;
// 引用类型示例
String name = "John Doe";
ArrayList<Integer> numbers = new ArrayList<Integer>();
numbers.add(1);
numbers.add(2);
numbers.add(3);
控制结构
Java中的控制结构包括条件语句(如if...else
)、循环语句(如for
, while
, do...while
)和跳转语句(如break
, continue
)。
// 条件语句
int x = 10;
if (x > 5) {
System.out.println("x is greater than 5");
} else {
System.out.println("x is less than or equal to 5");
}
// 循环语句
for (int i = 0; i < 5; i++) {
System.out.println("Iteration " + i);
}
int j = 0;
while (j < 5) {
System.out.println("Iteration " + j);
j++;
}
int k = 0;
do {
System.out.println("Iteration " + k);
k++;
} while (k < 5);
// 跳转语句
for (int m = 0; m < 10; m++) {
if (m == 5) {
break;
}
System.out.println("Value of m: " + m);
}
Java面向对象特性
Java支持面向对象的特性,包括封装、继承、多态等。
封装
封装是指将数据和操作数据的方法绑定在同一个类中,并通过访问修饰符(public
, private
, protected
)来控制对外的访问。
public class Employee {
private String name;
private int age;
public Employee(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
Employee emp = new Employee("John Doe", 30);
System.out.println("Name: " + emp.getName() + ", Age: " + emp.getAge());
}
}
继承
继承允许一个类(子类)继承另一个类(父类)的属性和方法。这是实现代码重用的一种方式。
public class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
public class Dog extends Animal {
public void bark() {
System.out.println("Dog is barking");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
dog.bark();
}
}
多态
多态允许子类覆盖父类的方法,并根据运行时的对象类型来决定调用哪个方法。这允许更灵活的代码设计。
public class Animal {
public void eat() {
System.out.println("Animal is eating");
}
}
public class Dog extends Animal {
@Override
public void eat() {
System.out.println("Dog is eating");
}
}
public class Main {
public static void main(String[] args) {
Animal animal = new Animal();
animal.eat(); // 输出 "Animal is eating"
Animal dog = new Dog();
dog.eat(); // 输出 "Dog is eating"
}
}
Java常用类库和API简介
Java提供了丰富的标准类库,包括集合类、日期和时间处理、输入输出操作等。
集合类
集合类用于处理一组对象,包括ArrayList
, LinkedList
, HashMap
等。
import java.util.ArrayList;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("Apple");
list.add("Banana");
list.add("Cherry");
System.out.println(list);
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Cherry", 3);
System.out.println(map);
}
}
日期与时间处理
Java提供了java.util.Date
和java.time
包中的类来处理日期和时间。
import java.util.Date;
import java.time.LocalDate;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
Date currentDate = new Date();
System.out.println("Current Date using Date: " + currentDate);
LocalDate localDate = LocalDate.now();
System.out.println("Current Date using LocalDate: " + localDate);
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("Current Date and Time using LocalDateTime: " + localDateTime);
}
}
Spring框架入门
Spring框架简介
Spring是一个轻量级的企业级Java开发框架,它简化了Java EE开发,提供了一整套解决方案,包括依赖注入、AOP、安全、事务管理等功能。
Spring IoC和DI详解
Spring的核心特性之一是IoC(控制反转)和DI(依赖注入)。IoC指的是控制对象创建和依赖关系管理的职责从程序代码转移到外部容器,DI则是容器通过构造器、属性等方式向对象注入依赖关系。
Spring配置文件
Spring通常使用XML配置文件来定义Bean和它们之间的依赖关系。也可以使用注解来配置Bean。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="exampleBean" class="com.example.ExampleBean">
<property name="name" value="Example Bean"/>
</bean>
</beans>
public class ExampleBean {
private String name;
public void setName(String name) {
this.name = name;
}
public void printName() {
System.out.println(name);
}
}
依赖注入
依赖注入是通过Spring容器注入依赖关系到对象中,而不是在对象内部创建依赖对象。
<bean id="exampleBean" class="com.example.ExampleBean">
<property name="name" value="Example Bean"/>
</bean>
<bean id="anotherBean" class="com.example.AnotherBean">
<property name="exampleBean" ref="exampleBean"/>
</bean>
public class AnotherBean {
private ExampleBean exampleBean;
public void setExampleBean(ExampleBean exampleBean) {
this.exampleBean = exampleBean;
}
public void printExampleBeanName() {
System.out.println(exampleBean.getName());
}
}
Spring AOP基础
Spring AOP(面向切面编程)允许将横切关注点(如日志、事务管理)模块化为切面并应用于业务逻辑。
定义切面
@Aspect
@Component
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))")
public void logBefore(JoinPoint joinPoint) {
System.out.println("Before method invocation: " + joinPoint.getSignature().getName());
}
}
配置AOP
<aop:config>
<aop:aspect ref="loggingAspect">
<aop:before method="logBefore" pointcut="execution(* com.example.service.*.*(..))"/>
</aop:aspect>
</aop:config>
Spring配置最佳实践
- 使用注解而不是XML配置来定义Bean
- 使用
@Autowired
来自动注入依赖 - 使用
@Transactional
来处理事务
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
@Transactional
public void saveUser(User user) {
userMapper.saveUser(user);
}
}
MyBatis框架入门
MyBatis框架简介
MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
MyBatis基本用法
MyBatis通过配置文件(XML)或注解来定义SQL映射。
配置文件
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
映射文件
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUser" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
</mapper>
使用MyBatis
public class Main {
public static void main(String[] args) {
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("MyBatisConfig.xml"));
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.selectUser(1);
System.out.println(user);
}
}
MyBatis与数据库交互
MyBatis通过执行SQL语句与数据库交互,并将结果映射到Java对象。
public interface UserMapper {
User selectUser(int id);
}
public class User {
private int id;
private String name;
private String email;
// Getter and Setter methods
}
MyBatis配置最佳实践
- 使用配置文件而不是硬编码SQL
- 使用
ResultMap
来定义复杂的映射关系 - 使用
@Select
,@Insert
,@Update
,@Delete
等注解来定义SQL
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUser(int id);
@Insert("INSERT INTO users (username, password, email) VALUES (#{username}, #{password}, #{email})")
void saveUser(User user);
}
Hibernate框架入门
Hibernate框架简介
Hibernate是一个对象关系映射(ORM)框架,它允许Java对象映射到关系型数据库表,提供了透明的持久化功能。
Hibernate对象关系映射
Hibernate通过注解或XML配置来映射Java对象(实体)到数据库表。
实体类
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
// Getter and Setter methods
}
配置文件
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydb</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping class="com.example.entity.User"/>
</session-factory>
</hibernate-configuration>
使用Hibernate
public class Main {
public static void main(String[] args) {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
User user = new User();
user.setName("John Doe");
user.setEmail("[email protected]");
session.save(user);
session.getTransaction().commit();
session.close();
}
}
Hibernate事务管理
public class UserService implements Service {
private UserMapper userMapper;
public void saveUser(User user) {
Session session = sessionFactory.openSession();
session.beginTransaction();
userMapper.saveUser(user);
session.getTransaction().commit();
session.close();
}
}
Hibernate查询语言
Hibernate支持HQL(Hibernate Query Language)来查询和更新数据库中的对象。
public class Main {
public static void main(String[] args) {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
session.beginTransaction();
List<User> users = session.createQuery("FROM User").list();
for (User user : users) {
System.out.println(user.getName());
}
session.getTransaction().commit();
session.close();
}
}
Hibernate配置最佳实践
- 使用注解而不是XML配置来定义实体类
- 使用
@Entity
,@Id
,@GeneratedValue
等注解来定义实体类的属性 - 使用
@Transactional
来处理事务
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "email")
private String email;
// Getter and Setter methods
}
Struts2框架入门
Struts2框架简介
Struts2是一个强大的开源Web应用框架,它支持MVC设计模式,并提供了一整套的应用开发框架。
Struts2控制器与Action
Struts2的控制器主要由Action
类实现,Action
负责处理用户的请求,并将结果传递给视图。
Action类
public class MyAction implements Action {
private String message;
public String execute() {
message = "Hello, Struts2!";
return SUCCESS;
}
public String getMessage() {
return message;
}
}
配置文件
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="myAction" class="com.example.action.MyAction">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
视图
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>Struts2 Example</title>
</head>
<body>
<h1><s:property value="message" /></h1>
</body>
</html>
Struts2的配置与标签
Struts2通过配置文件来定义请求与Action之间的映射,并通过标签库来生成动态页面。
标签库
<%@ taglib prefix="s" uri="/struts-tags" %>
<s:textfield name="username" label="Username" />
<s:submit value="Submit" />
Struts2配置最佳实践
- 使用
@Action
注解来定义Action - 使用
@Result
注解来定义结果视图 - 使用
@Interceptor
注解来定义拦截器
@Action(value = "userRegister", results = {
@Result(name = "success", location = "/success.jsp"),
@Result(name = "input", location = "/register.jsp")
})
public class UserAction implements Action {
// Action methods
}
实战演练与项目实践
使用主流框架构建小型项目
结合Spring、MyBatis、Hibernate、Struts2等主流框架构建一个完整的Web应用项目。
实战案例
构建一个用户管理系统,包括用户注册、登录、查询和更新等功能。
数据库设计
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(50) NOT NULL,
email VARCHAR(100)
);
Spring配置
<bean id="myBatisSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:MyBatisConfig.xml" />
</bean>
<bean id="myBatisDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mydb" />
<property name="username" value="root" />
<property name="password" value="password" />
</bean>
<bean id="userMapper" class="com.example.mapper.UserMapper" />
<bean id="userService" class="com.example.service.UserService">
<property name="userMapper" ref="userMapper" />
</bean>
MyBatis映射文件
<mapper namespace="com.example.mapper.UserMapper">
<select id="getUser" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="saveUser" parameterType="com.example.model.User">
INSERT INTO users (username, password, email) VALUES (#{username}, #{password}, #{email})
</insert>
<update id="updateUser" parameterType="com.example.model.User">
UPDATE users SET username=#{username}, password=#{password}, email=#{email} WHERE id=#{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM users WHERE id=#{id}
</delete>
</mapper>
Hibernate实体类
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "email")
private String email;
// Getter and Setter methods
}
Hibernate配置文件
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydb</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<mapping class="com.example.entity.User"/>
</session-factory>
</hibernate-configuration>
Struts2 Action
public class UserAction implements Action {
private String username;
private String password;
private String email;
private UserService userService;
public String register() {
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setEmail(email);
userService.saveUser(user);
return SUCCESS;
}
public String login() {
User user = userService.getUser(username, password);
if (user != null) {
return SUCCESS;
} else {
return INPUT;
}
}
// Getter and Setter methods
}
Struts2配置文件
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="userRegister" class="com.example.action.UserAction" method="register">
<result name="success">/success.jsp</result>
</action>
<action name="userLogin" class="com.example.action.UserAction" method="login">
<result name="success">/success.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
集成与协作
在项目中,Spring负责依赖注入和管理业务逻辑,MyBatis或Hibernate负责持久层操作,Struts2负责处理用户请求和视图渲染。
Spring集成配置
<bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
<bean id="userService" class="com.example.service.UserService">
<property name="userMapper" ref="userMapper" />
</bean>
Hibernate事务管理
public class UserService implements Service {
private UserMapper userMapper;
public void saveUser(User user) {
Session session = sessionFactory.openSession();
session.beginTransaction();
userMapper.saveUser(user);
session.getTransaction().commit();
session.close();
}
}
MyBatis事务管理
public class UserService implements Service {
private UserMapper userMapper;
public void saveUser(User user) {
SqlSession session = sqlSessionFactory.openSession();
session.beginTransaction();
userMapper.saveUser(user);
session.commit();
session.close();
}
}
通过以上步骤,你可以构建一个功能完善的Web应用项目,整合主流框架以实现高效、稳定的开发。
共同學習,寫下你的評論
評論加載中...
作者其他優質文章