1.关于web
Web应用开发是指创建和构建能够在Web浏览器中运行的应用程序。它涉及使用各种技术和工具来设计、开发和实现基于Web的应用程序。下面是一些常见的概念和技术,涵盖了Web应用开发的关键方面:
1. 前端开发:前端开发主要关注用户界面的设计和实现。它使用HTML、CSS和JavaScript等技术来构建网页,并通过与后端交互获取数据和处理用户交互。
2.后端开发:后端开发处理Web应用程序的服务器端逻辑。它使用各种编程语言(如Java、Python、Node.js等)和框架(如Django、Flask、Express等)来处理数据存储、业务逻辑和与前端的通信。
3.据库:Web应用通常需要持久化存储数据。数据库是一种结构化数据存储和管理系统,用于存储和检索数据。流行的数据库包括MySQL、PostgreSQL和MongoDB等。
4 API:API(应用程序接口)定义了不同软件组件之间的通信规范。通过API,前端可以向后端发送请求并获取数据,后端则可以响应这些请求并提供数据。
5 .安全性:Web应用开发需要考虑安全性,以保护用户数据和应用程序免受恶意攻击。常见的安全性措施包括身份验证、数据加密、防止跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等。
6 .前端框架和库
前端开发常常使用各种框架和库来简化开发过程。流行的前端框架包括React、Vue.js和Angular等,它们提供了组件化开发、状态管理和路由等功能。
7 .测试和调试:测试和调试是Web应用开发中至关重要的环节。开发者可以使用单元测试、集成测试和端到端测试等技术来确保应用程序的质量和稳定性。
8 .部署和托管:部署是将Web应用程序发布到生产环境中的过程。开发者可以使用各种工具和平台来托管Web应用程序,如云服务提供商(如AWS、Azure)、虚拟私有服务器(VPS)和容器化技术(如Docker)等。
2. MyBatis和MyBatis-Plus的简介
2.1 MyBatis
是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis将SQL语句和Java代码解耦,提供了很好的灵活性和可维护性。在MyBatis中,我们需要手写SQL语句。
2.2 MyBatis-Plus
是在MyBatis基础上进行封装和扩展的框架,它提供了更多的操作方法和便捷的编程方式,可以帮助开发者更加快速地完成开发任务。同时,MyBatis-Plus也支持Lambda表达式进行查询,使得代码更加简洁易读。
2.3 如何集成MyBatis和MyBatis-Plus
2.3.1 引入相关依赖
在pom.xml
文件中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.x.x</version>
</dependency>
2.3.2配置数据源
在application.properties
或application.yml
文件中配置数据源信息。
spring:
datasource:
url: jdbc:mysql://localhost:3306/db_test?useUnicode=true&characterEncoding=utf-8
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
2.3.3配置MyBatis和MyBatis-Plus
我们可以使用@MapperScan
注解来自动扫描并注册Mapper接口。同时,我们还需要配置MyBatis-Plus的分页插件。
@Configuration
@MapperScan("com.example.demo.mapper")
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
MyBatis和MyBatis-Plus的基本增删改查操作示例
假设我们有一个User实体类和对应的UserMapper接口,下面给出MyBatis和MyBatis-Plus的基本增删改查操作示例:
public interface UserMapper {
// MyBatis的查询方法
@Select("SELECT * FROM user WHERE id = #{id}")
User findById(@Param("id") Long id);
// MyBatis-Plus的查询方法
User selectById(@Param("id") Long id);
List<User> selectList(Wrapper<User> wrapper);
int insert(User user);
int updateById(User user);
int deleteById(Long id);
}
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
// 查询用户(MyBatis)
public User getUserById(Long id) {
return userMapper.findById(id);
}
// 查询用户(MyBatis-Plus)
public User getUserById2(Long id) {
return userMapper.selectById(id);
}
// 新增用户
public void addUser(User user) {
userMapper.insert(user);
}
// 修改用户
public void updateUser(User user) {
userMapper.updateById(user);
}
// 删除用户
public void deleteUser(Long id) {
userMapper.deleteById(id);
}
// 查询用户列表(MyBatis-Plus)
public List<User> getUserList() {
return userMapper.selectList(null);
}
}
这里演示了基本的增删改查操作,其中MyBatis需要手写SQL语句,而MyBatis-Plus提供了更加便捷的编程方式。
3.案例
下面是我在开发中印象比较深的案例:
实现一个简单的RESTful API接口可以通过Spring Boot框架和Spring MVC来实现。
3.1实现一个简单的RESTful API接口
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
User user = userService.getUserById(id);
return ResponseEntity.ok(user);
}
@PostMapping
public ResponseEntity<Void> addUser(@RequestBody User user) {
userService.addUser(user);
return ResponseEntity.status(HttpStatus.CREATED).build();
}
@PutMapping("/{id}")
public ResponseEntity<Void> updateUser(@PathVariable Long id, @RequestBody User user) {
user.setId(id);
userService.updateUser(user);
return ResponseEntity.noContent().build();
}
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
userService.deleteUser(id);
return ResponseEntity.noContent().build();
}
}
3.2 使用Swagger构建API文档
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo"))
.paths(PathSelectors.any())
.build();
}
}
3.3异常处理和统一返回结果封装
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ResponseEntity<ApiError> handleException(Exception ex) {
ApiError apiError = new ApiError(HttpStatus.INTERNAL_SERVER_ERROR, ex.getMessage());
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(apiError);
}
}
public class ApiError {
private HttpStatus status;
private String message;
// 省略构造方法和Getter/Setter方法
}
3.4配置全局拦截器和过滤器
@Component
public class CustomInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理之前进行调用(Controller方法调用之前)
return true;
}
// 省略postHandle和afterCompletion方法
}
@Component
public class CustomFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 在请求处理之前进行调用
chain.doFilter(request, response);
// 在请求处理之后进行调用
}
// 省略init和destroy方法
}
通过上述代码示例,我们可以了解到如何在Web开发中实践RESTful API接口的实现、Swagger构建API文档、异常处理和统一返回结果封装以及全局拦截器和过滤器的配置。
4.学习笔记和心得体会分享
- Spring Boot框架通过简化配置和提供自动化的特性,使得开发者可以更加专注于业务逻辑的实现,而无需过多关注底层的配置和细节。
- 使用Spring Boot可以快速搭建一个基于Java的Web应用程序,减少了繁琐的配置工作,提高了开发效率。
- 通过使用注解和自动装配的方式,可以方便地实现各种功能,如RESTful API的定义、数据访问和业务逻辑的处理等。
- Spring Boot提供了丰富的插件和工具,如Swagger用于API文档生成、Actuator用于监控和管理应用程序等,可以方便地进行开发和调试。
- 在开发过程中,合理划分和设计Controller、Service和Repository等模块,遵循单一职责原则,提高代码的可读性和可维护性。
- 异常处理和统一返回结果封装是常见的开发需求,通过全局异常处理和自定义返回结果类,可以对异常进行统一处理和返回友好的错误信息。
总的来说,通过学习和实践Spring Boot应用程序的开发,我对Spring Boot框架的特性和使用方法有了更深入的了解,并能够更加高效地进行Web应用程序的开发。同时,也加深了对RESTful API设计、异常处理和统一返回结果封装等方面的理解和实践经验。