Java Web开发常用框架Spring MVC Struts示例解析

 更新时间:2023年06月06日 10:31:12   作者:移动安全星球  
这篇文章主要为大家介绍了Java Web开发常用框架Spring MVC Struts示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

在Java Web开发中,通常使用Web框架简化开发过程。以下是两个常用的Java Web框架:Spring MVC和Apache Struts。

Spring MVC

Spring MVC是Spring框架的一部分,它是一个基于Java的企业级Web应用程序开发框架。Spring MVC提供了一种基于MVC设计模式的简化Web应用程序开发的方法。它具有以下特点:

  • 灵活性:支持多种视图技术,包括JSP、Thymeleaf、FreeMarker等。
  • 易于集成:与其他Spring模块(如Spring Data、Spring Security等)无缝集成。
  • 可扩展性:提供了许多接口和抽象类,可以根据需求自定义功能。

一个简单的Spring MVC示例

在这个例子中,我们将创建一个简单的Spring MVC Web应用程序,实现一个用户登录功能。

  • 首先,创建一个Maven项目,并在pom.xml中添加Spring MVC依赖:
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.10</version>
    </dependency>
</dependencies>
  • 创建一个名为LoginController的控制器类:
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class LoginController {
    @GetMapping("/login")
    public String showLoginForm() {
        return "login";
    }
    @PostMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        Model model) {
        if ("admin".equals(username) && "password".equals(password)) {
            model.addAttribute("username", username);
            return "welcome";
        } else {
            model.addAttribute("errorMessage", "Invalid username or password");
            return "login";
        }
    }
}
  • src/main/resources目录下创建一个名为application.properties的配置文件,设置Spring MVC视图解析器的前缀和后缀:
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
  • src/main/webapp/WEB-INF/views目录下创建login.jspwelcome.jsp文件:

login.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <form action="login" method="post">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username" required>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required>
        <input type="submit" value="Login">
    </form>
    <p style="color:red;">${errorMessage}</p>
</body>
</html>

welcome.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome, ${username}!</h1>
</body>
</html>
  • 创建Spring MVC的配置类:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.example")
public class WebConfig implements WebMvcConfigurer {
    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
}
  • 创建Web应用程序的初始化类:
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

现在,您可以运行此Web应用程序并访问http://localhost:8080/login,输入正确的用户名和密码(如admin和password),然后看到欢迎页面。

Apache Struts

Apache Struts是一个用于创建Java Web应用程序的开源框架。Struts采用了MVC设计模式,具有以下特点:

  • 简化开发:提供了许多内置功能,如表单验证、国际化等。
  • 可扩展性:支持拦截器、插件等,可以根据需求扩展功能。
  • 社区支持:拥有庞大的用户社区和丰富的文档。

一个简单的Struts示例

在这个例子中,我们将创建一个简单的Struts Web应用程序,实现一个用户登录功能。

  • 创建一个Maven项目,并在pom.xml中添加Struts依赖:
<dependencies>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.26</version>
    </dependency>
</dependencies>
  • 创建一个名为LoginAction的Action类:
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport {
    private String username;
    private String password;
    // Getter and setter methods for username and password
    @Override
    public String execute() {
        if ("admin".equals(username) && "password".equals(password)) {
            return SUCCESS;
        } else {
            addActionError("Invalid username or password");
            return INPUT;
        }
    }
}
  • src/main/resources目录下创建一个名为struts.xml的配置文件,定义Action和视图:
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="default" extends="struts-default">
        <action name="login" class="com.example.LoginAction">
            <result name="input">/login.jsp</result>
            <result name="success">/welcome.jsp</result>
        </action>
    </package>
</struts>
  • src/main/webapp目录下创建login.jspwelcome.jsp文件:

login.jsp:

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Login</title>
</head>
<body>
    <h1>Login</h1>
    <s:form action="login">
        <s:textfield name="username" label="Username" required="true"/>
        <s:password name="password" label="Password" required="true"/>
        <s:submit value="Login"/>
    </s:form>
    <s:actionerror/>
</body>
</html>

welcome.jsp:

<%@ taglib prefix="s" uri="/struts-tags" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Welcome</title>
</head>
<body>
    <h1>Welcome, <s:property value="username"/>!</h1>
</body>
</html>
  • src/main/webapp/WEB-INF目录下创建一个名为web.xml的配置文件,配置Struts Filter:
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <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>/*</url-pattern>  
</filter-mapping>  
</web-app>

现在,您可以运行此Web应用程序并访问http://localhost:8080/login.jsp,输入正确的用户名和密码(如admin和password),然后看到欢迎页面。

比较Spring MVC和Apache Struts

尽管Spring MVC和Apache Struts都是Java Web开发中常用的框架,但它们之间有一些区别:

  • 集成:Spring MVC是Spring框架的一部分,与其他Spring模块(如Spring Data、Spring Security等)无缝集成。而Struts是一个独立的框架,需要与其他框架或库一起使用。
  • 灵活性:Spring MVC提供了更多的灵活性,支持多种视图技术,如JSP、Thymeleaf、FreeMarker等。而Struts主要支持JSP。
  • 社区支持:Spring MVC由于其广泛的应用和强大的功能,拥有更大的社区支持和丰富的文档。Struts框架的社区支持和文档相对较少。
  • 易用性:Spring MVC配置起来相对复杂一些,但提供了更多的自定义选项。Struts的配置相对简单,但可能在某些情况下不够灵活。

总之,根据项目需求和团队经验,选择合适的框架是非常重要的。您可以根据以上比较,选择最适合您的Java Web框架。在实际开发过程中,还可以尝试其他Java Web框架,如JavaServer Faces(JSF)、Play Framework等。

在学习Spring MVC或Apache Struts时,请务必参考官方文档和示例项目,以便更好地理解框架的原理和用法。现在,您已经对两个常用的Java Web框架有了一定的了解,可以开始进行实际的项目开发了。祝您学习顺利!

以上就是Java Web开发常用框架Spring MVC Struts示例解析的详细内容,更多关于Java Web框架SpringMVC Struts的资料请关注脚本之家其它相关文章!

相关文章

  • IDEA下lombok安装及找不到get,set的问题的解决方法

    IDEA下lombok安装及找不到get,set的问题的解决方法

    这篇文章主要介绍了IDEA下lombok安装及找不到get,set的问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Java初学者常问的问题(推荐)

    Java初学者常问的问题(推荐)

    本文介绍一些Java初学者常问的问题,很多朋友对可以用%除以一个小数吗? a += b 和 a = a + b 的效果有区别吗? 声明一个数组为什么需要花费大量时间? 为什么Java库不用随机pivot方式的快速排序?等等一系列问题有疑惑,下面就通过本文给大家详细介绍下
    2017-03-03
  • JVM解密之解构类加载与GC垃圾回收机制详解

    JVM解密之解构类加载与GC垃圾回收机制详解

    本文主要介绍了Java虚拟机(JVM)的内存划分、类加载机制以及垃圾回收机制,JVM的内存划分为程序计数器、栈、堆和方法区,类加载机制包括类加载过程、加载器模型和双亲委派模型,垃圾回收机制主要包括标记-清除、标记-复制、标记-整理和分代回收算法
    2025-02-02
  • 使用stream的Collectors.toMap()方法常见的问题及解决

    使用stream的Collectors.toMap()方法常见的问题及解决

    这篇文章主要介绍了使用stream的Collectors.toMap()方法常见的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java中stream的用法详细解读

    Java中stream的用法详细解读

    这篇文章主要介绍了Java中stream的用法详细解读,Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作,使用Stream API 对集合数据进行操作,就类似于使用SQL执行的数据库查询,需要的朋友可以参考下
    2023-10-10
  • 一文读懂ava中的Volatile关键字使用

    一文读懂ava中的Volatile关键字使用

    volatile关键字的作用保证了变量的可见性(visibility)。被volatile关键字修饰的变量,如果值发生了变更,其他线程立马可见,避免出现脏读的现象。这篇文章主要介绍了ava中的Volatile关键字使用,需要的朋友可以参考下
    2020-03-03
  • 基于java高并发处理方案

    基于java高并发处理方案

    这篇文章主要介绍了基于java高并发处理方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • java对象转成byte数组的3种方法

    java对象转成byte数组的3种方法

    这篇文章主要为大家详细介绍了java对象转成byte数组的3种方法,具有一定的参考价值,感兴趣的朋友可以参考一下
    2018-06-06
  • J2EE Servlet上传文件到服务器并相应显示功能的实现代码

    J2EE Servlet上传文件到服务器并相应显示功能的实现代码

    这篇文章主要介绍了J2EE Servlet上传文件到服务器,并相应显示,在文中上传方式使用的是post不能使用get,具体实例代码大家参考下本文
    2018-07-07
  • java实现双层圣诞树加修饰代码示例

    java实现双层圣诞树加修饰代码示例

    大家好,本篇文章主要讲的是java实现双层圣诞树加修饰代码示例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论