在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应用程序,实现一个用户登录性能。
- 首先,创立一个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.jsp
和welcome.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>
- 创立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),而后看到欢送页面。
8.5.2. 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.jsp
和welcome.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),而后看到欢送页面。
8.5.3. 比拟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框架有了肯定的理解,能够开始进行理论的我的项目开发了。祝您学习顺利!
举荐浏览:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g
发表回复