关于web应用开发

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.propertiesapplication.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设计、异常处理和统一返回结果封装等方面的理解和实践经验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值