乐趣区

关于人工智能:85-常用Web框架如Spring-MVCStruts等

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

8.5.1. Spring MVC

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

  • 灵活性:反对多种视图技术,包含 JSP、Thymeleaf、FreeMarker 等。
  • 易于集成:与其余 Spring 模块(如 Spring Data、Spring Security 等)无缝集成。
  • 可扩展性:提供了许多接口和抽象类,能够依据需要自定义性能。

一个简略的 Spring MVC 示例

在这个例子中,咱们将创立一个简略的 Spring MVC Web 应用程序,实现一个用户登录性能。

  1. 首先,创立一个 Maven 我的项目,并在 pom.xml 中增加 Spring MVC 依赖:
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.10</version>
    </dependency>
</dependencies>
  1. 创立一个名为 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";
        }
    }
}
  1. src/main/resources 目录下创立一个名为 application.properties 的配置文件,设置 Spring MVC 视图解析器的前缀和后缀:
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
  1. 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>
        <br>
        <label for="password">Password:</label>
        <input type="password" id="password" name="password" required>
        <br>
        <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>
  1. 创立 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;
    }
}
  1. 创立 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),而后看到欢送页面。

8.5.2. Apache Struts

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

  • 简化开发:提供了许多内置性能,如表单验证、国际化等。
  • 可扩展性:反对拦截器、插件等,能够依据需要扩大性能。
  • 社区反对:领有宏大的用户社区和丰盛的文档。

一个简略的 Struts 示例

在这个例子中,咱们将创立一个简略的 Struts Web 应用程序,实现一个用户登录性能。

  1. 创立一个 Maven 我的项目,并在 pom.xml 中增加 Struts 依赖:
<dependencies>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.26</version>
    </dependency>
</dependencies>
  1. 创立一个名为 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;
        }
    }
}
  1. 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>
  1. 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>
  1. 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),而后看到欢送页面。

8.5.3. 比拟 Spring MVC 和 Apache Struts

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

  1. 集成:Spring MVC 是 Spring 框架的一部分,与其余 Spring 模块(如 Spring Data、Spring Security 等)无缝集成。而 Struts 是一个独立的框架,须要与其余框架或库一起应用。
  2. 灵活性:Spring MVC 提供了更多的灵活性,反对多种视图技术,如 JSP、Thymeleaf、FreeMarker 等。而 Struts 次要反对 JSP。
  3. 社区反对:Spring MVC 因为其宽泛的利用和弱小的性能,领有更大的社区反对和丰盛的文档。Struts 框架的社区反对和文档绝对较少。
  4. 易用性:Spring MVC 配置起来绝对简单一些,但提供了更多的自定义选项。Struts 的配置绝对简略,但可能在某些状况下不够灵便。

总之,依据我的项目需要和团队教训,抉择适合的框架是十分重要的。您能够依据以上比拟,抉择最适宜您的 Java Web 框架。在理论开发过程中,还能够尝试其余 Java Web 框架,如 JavaServer Faces(JSF)、Play Framework 等。

在学习 Spring MVC 或 Apache Struts 时,请务必参考官网文档和示例我的项目,以便更好地了解框架的原理和用法。当初,您曾经对两个罕用的 Java Web 框架有了肯定的理解,能够开始进行理论的我的项目开发了。祝您学习顺利!
举荐浏览:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

退出移动版