欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java?Web開發(fā)常用框架Spring?MVC?Struts示例解析

 更新時(shí)間:2023年06月06日 10:31:12   作者:移動(dòng)安全星球  
這篇文章主要為大家介紹了Java?Web開發(fā)常用框架Spring?MVC?Struts示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

在Java Web開發(fā)中,通常使用Web框架簡化開發(fā)過程。以下是兩個(gè)常用的Java Web框架:Spring MVC和Apache Struts。

Spring MVC

Spring MVC是Spring框架的一部分,它是一個(gè)基于Java的企業(yè)級(jí)Web應(yīng)用程序開發(fā)框架。Spring MVC提供了一種基于MVC設(shè)計(jì)模式的簡化Web應(yīng)用程序開發(fā)的方法。它具有以下特點(diǎn):

  • 靈活性:支持多種視圖技術(shù),包括JSP、Thymeleaf、FreeMarker等。
  • 易于集成:與其他Spring模塊(如Spring Data、Spring Security等)無縫集成。
  • 可擴(kuò)展性:提供了許多接口和抽象類,可以根據(jù)需求自定義功能。

一個(gè)簡單的Spring MVC示例

在這個(gè)例子中,我們將創(chuàng)建一個(gè)簡單的Spring MVC Web應(yīng)用程序,實(shí)現(xiàn)一個(gè)用戶登錄功能。

  • 首先,創(chuàng)建一個(gè)Maven項(xiàng)目,并在pom.xml中添加Spring MVC依賴:
<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.10</version>
    </dependency>
</dependencies>
  • 創(chuàng)建一個(gè)名為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目錄下創(chuàng)建一個(gè)名為application.properties的配置文件,設(shè)置Spring MVC視圖解析器的前綴和后綴:
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
  • src/main/webapp/WEB-INF/views目錄下創(chuàng)建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>
  • 創(chuàng)建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;
    }
}
  • 創(chuàng)建Web應(yīng)用程序的初始化類:
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[]{"/"};
    }
}

現(xiàn)在,您可以運(yùn)行此Web應(yīng)用程序并訪問http://localhost:8080/login,輸入正確的用戶名和密碼(如admin和password),然后看到歡迎頁面。

Apache Struts

Apache Struts是一個(gè)用于創(chuàng)建Java Web應(yīng)用程序的開源框架。Struts采用了MVC設(shè)計(jì)模式,具有以下特點(diǎn):

  • 簡化開發(fā):提供了許多內(nèi)置功能,如表單驗(yàn)證、國際化等。
  • 可擴(kuò)展性:支持?jǐn)r截器、插件等,可以根據(jù)需求擴(kuò)展功能。
  • 社區(qū)支持:擁有龐大的用戶社區(qū)和豐富的文檔。

一個(gè)簡單的Struts示例

在這個(gè)例子中,我們將創(chuàng)建一個(gè)簡單的Struts Web應(yīng)用程序,實(shí)現(xiàn)一個(gè)用戶登錄功能。

  • 創(chuàng)建一個(gè)Maven項(xiàng)目,并在pom.xml中添加Struts依賴:
<dependencies>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.26</version>
    </dependency>
</dependencies>
  • 創(chuàng)建一個(gè)名為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目錄下創(chuàng)建一個(gè)名為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目錄下創(chuàng)建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目錄下創(chuàng)建一個(gè)名為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>

現(xiàn)在,您可以運(yùn)行此Web應(yīng)用程序并訪問http://localhost:8080/login.jsp,輸入正確的用戶名和密碼(如admin和password),然后看到歡迎頁面。

比較Spring MVC和Apache Struts

盡管Spring MVC和Apache Struts都是Java Web開發(fā)中常用的框架,但它們之間有一些區(qū)別:

  • 集成:Spring MVC是Spring框架的一部分,與其他Spring模塊(如Spring Data、Spring Security等)無縫集成。而Struts是一個(gè)獨(dú)立的框架,需要與其他框架或庫一起使用。
  • 靈活性:Spring MVC提供了更多的靈活性,支持多種視圖技術(shù),如JSP、Thymeleaf、FreeMarker等。而Struts主要支持JSP。
  • 社區(qū)支持:Spring MVC由于其廣泛的應(yīng)用和強(qiáng)大的功能,擁有更大的社區(qū)支持和豐富的文檔。Struts框架的社區(qū)支持和文檔相對較少。
  • 易用性:Spring MVC配置起來相對復(fù)雜一些,但提供了更多的自定義選項(xiàng)。Struts的配置相對簡單,但可能在某些情況下不夠靈活。

總之,根據(jù)項(xiàng)目需求和團(tuán)隊(duì)經(jīng)驗(yàn),選擇合適的框架是非常重要的。您可以根據(jù)以上比較,選擇最適合您的Java Web框架。在實(shí)際開發(fā)過程中,還可以嘗試其他Java Web框架,如JavaServer Faces(JSF)、Play Framework等。

在學(xué)習(xí)Spring MVC或Apache Struts時(shí),請務(wù)必參考官方文檔和示例項(xiàng)目,以便更好地理解框架的原理和用法?,F(xiàn)在,您已經(jīng)對兩個(gè)常用的Java Web框架有了一定的了解,可以開始進(jìn)行實(shí)際的項(xiàng)目開發(fā)了。祝您學(xué)習(xí)順利!

以上就是Java Web開發(fā)常用框架Spring MVC Struts示例解析的詳細(xì)內(nèi)容,更多關(guān)于Java Web框架SpringMVC Struts的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • IDEA下lombok安裝及找不到get,set的問題的解決方法

    IDEA下lombok安裝及找不到get,set的問題的解決方法

    這篇文章主要介紹了IDEA下lombok安裝及找不到get,set的問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Java初學(xué)者常問的問題(推薦)

    Java初學(xué)者常問的問題(推薦)

    本文介紹一些Java初學(xué)者常問的問題,很多朋友對可以用%除以一個(gè)小數(shù)嗎? a += b 和 a = a + b 的效果有區(qū)別嗎? 聲明一個(gè)數(shù)組為什么需要花費(fèi)大量時(shí)間? 為什么Java庫不用隨機(jī)pivot方式的快速排序?等等一系列問題有疑惑,下面就通過本文給大家詳細(xì)介紹下
    2017-03-03
  • JVM解密之解構(gòu)類加載與GC垃圾回收機(jī)制詳解

    JVM解密之解構(gòu)類加載與GC垃圾回收機(jī)制詳解

    本文主要介紹了Java虛擬機(jī)(JVM)的內(nèi)存劃分、類加載機(jī)制以及垃圾回收機(jī)制,JVM的內(nèi)存劃分為程序計(jì)數(shù)器、棧、堆和方法區(qū),類加載機(jī)制包括類加載過程、加載器模型和雙親委派模型,垃圾回收機(jī)制主要包括標(biāo)記-清除、標(biāo)記-復(fù)制、標(biāo)記-整理和分代回收算法
    2025-02-02
  • 使用stream的Collectors.toMap()方法常見的問題及解決

    使用stream的Collectors.toMap()方法常見的問題及解決

    這篇文章主要介紹了使用stream的Collectors.toMap()方法常見的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java中stream的用法詳細(xì)解讀

    Java中stream的用法詳細(xì)解讀

    這篇文章主要介紹了Java中stream的用法詳細(xì)解讀,Stream 是 Java8 中處理集合的關(guān)鍵抽象概念,它可以指定你希望對集合進(jìn)行的操作,可以執(zhí)行非常復(fù)雜的查找、過濾和映射數(shù)據(jù)等操作,使用Stream API 對集合數(shù)據(jù)進(jìn)行操作,就類似于使用SQL執(zhí)行的數(shù)據(jù)庫查詢,需要的朋友可以參考下
    2023-10-10
  • 一文讀懂a(chǎn)va中的Volatile關(guān)鍵字使用

    一文讀懂a(chǎn)va中的Volatile關(guān)鍵字使用

    volatile關(guān)鍵字的作用保證了變量的可見性(visibility)。被volatile關(guān)鍵字修飾的變量,如果值發(fā)生了變更,其他線程立馬可見,避免出現(xiàn)臟讀的現(xiàn)象。這篇文章主要介紹了ava中的Volatile關(guān)鍵字使用,需要的朋友可以參考下
    2020-03-03
  • 基于java高并發(fā)處理方案

    基于java高并發(fā)處理方案

    這篇文章主要介紹了基于java高并發(fā)處理方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • java對象轉(zhuǎn)成byte數(shù)組的3種方法

    java對象轉(zhuǎn)成byte數(shù)組的3種方法

    這篇文章主要為大家詳細(xì)介紹了java對象轉(zhuǎn)成byte數(shù)組的3種方法,具有一定的參考價(jià)值,感興趣的朋友可以參考一下
    2018-06-06
  • J2EE Servlet上傳文件到服務(wù)器并相應(yīng)顯示功能的實(shí)現(xiàn)代碼

    J2EE Servlet上傳文件到服務(wù)器并相應(yīng)顯示功能的實(shí)現(xiàn)代碼

    這篇文章主要介紹了J2EE Servlet上傳文件到服務(wù)器,并相應(yīng)顯示,在文中上傳方式使用的是post不能使用get,具體實(shí)例代碼大家參考下本文
    2018-07-07
  • java實(shí)現(xiàn)雙層圣誕樹加修飾代碼示例

    java實(shí)現(xiàn)雙層圣誕樹加修飾代碼示例

    大家好,本篇文章主要講的是java實(shí)現(xiàn)雙層圣誕樹加修飾代碼示例,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12

最新評論