1. Struts2简介
Struts2是一个流行的开源MVC(Model-View-Controller)框架,用于构建基于Java的Web应用程序。它可以帮助开发者快速搭建企业级应用程序,并通过MVC模式将业务逻辑、表现层和控制器分离。掌握Struts2请求处理是使用该框架进行Web开发的基础。
2. Struts2请求处理流程
在Struts2中,请求处理流程大致分为以下几个步骤:
- 前端请求:用户通过浏览器发送HTTP请求到服务器。
- 拦截器链:请求经过拦截器链,拦截器可以对请求进行预处理、后处理和异常处理。
- 请求映射:Struts2根据请求的URL和请求方法找到对应的Action。
- 执行Action:Action执行业务逻辑并返回结果。
- 结果映射:Struts2根据Action返回的结果类型,找到对应的视图进行渲染。
- 响应:服务器将渲染好的页面发送回客户端。
3. 新手必看技巧
3.1 Action类编写规范
- 遵循单职责原则:Action类只负责处理业务逻辑,不涉及其他操作。
- 使用属性驱动:通过属性来接收请求参数,而不是使用getter和setter方法。
- 使用通配符:在Action中,可以使用通配符来匹配多个请求。
- 避免使用ActionForm:Struts2 2.0及以上版本推荐使用模型驱动,不再推荐使用ActionForm。
3.2 结果视图
- 使用通配符:在结果映射中,可以使用通配符来匹配多个视图。
- 自定义结果类型:根据需要,可以自定义结果类型。
- 使用国际化资源:将视图中的文本资源提取到国际化资源文件中。
3.3 拦截器
- 自定义拦截器:根据需要,可以自定义拦截器来处理请求。
- 拦截器优先级:拦截器的优先级可以根据实际需求进行调整。
4. 实战案例
4.1 简单的登录功能
1. 创建Action类
public class LoginAction extends ActionSupport {
private String username;
private String password;
public String execute() throws Exception {
// 验证用户名和密码
if ("admin".equals(username) && "123456".equals(password)) {
return "success";
} else {
return "error";
}
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
2. 创建结果映射
<result name="success">/index.jsp</result>
<result name="error">/login.jsp</result>
3. 创建JSP页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录页面</title>
</head>
<body>
<form action="login" method="post">
用户名:<input type="text" name="username" />
密码:<input type="password" name="password" />
<input type="submit" value="登录" />
</form>
</body>
</html>
4.2 使用拦截器
1. 创建拦截器类
public class LoggingInterceptor implements Interceptor {
@Override
public String intercept(ActionInvocation invocation) throws Exception {
// 打印请求信息
System.out.println("请求URL:" + invocation.getInvocationContext().getServletPath());
// 继续执行拦截器链
return invocation.invoke();
}
}
2. 配置拦截器
<interceptors>
<interceptor name="logging" class="com.example.LoggingInterceptor" />
</interceptors>
<default-interceptor-ref name="defaultStack" />
<action name="login" class="com.example.LoginAction">
<interceptor-ref name="logging" />
<result name="success">/index.jsp</result>
<result name="error">/login.jsp</result>
</action>
通过以上实战案例,你可以了解到Struts2请求处理的基本流程和技巧。在实际开发中,还需要不断学习和实践,以便更好地掌握Struts2框架。
