1 创建一个web项目。
2 导入必要的JAR文件。
放在WEB-INF下lib包里。
3 添加web.xml配置,添加启动配置。
1 23 StrutsDemo 45 12 13 14index.html 6index.htm 7index.jsp 8default.html 9default.htm 10default.jsp 1115 20struts2 1617 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter18 1921 24 25struts2 22/* 23
4 编写Action。
- Struts2直接使用Action来封装HTTP请求参数,因此Action类应该包含与请求相对应的属性,并为该属性提供对应的setter和getter方法。
- 为Action类里增加一个execute方法,因为Struts2框架默认会执行这个方法。这个方法本身并不做业务逻辑处理,而是调用其他业务逻辑组件完成这部分工作。
- Action类返回一个标准的字符串,该字符串是一个逻辑视图名,该视图名对应实际的物理视图。
我们来写个用户登录验证,提供用户名和密码两个属性。如果正确返回success否则返回error。
1 package com.cy.action; 2 3 import com.opensymphony.xwork2.ActionSupport; 4 5 public class LoginAction extends ActionSupport { 6 7 private static final long serialVersionUID = 1L; 8 9 private String userName;10 private String password;11 12 public String execute() {13 14 if (userName.equals("hellokitty") && password.equals("123")) {15 16 return SUCCESS;17 } else {18 return ERROR;19 }20 21 }22 23 public String getUserName() {24 return userName;25 }26 27 public void setUserName(String userName) {28 this.userName = userName;29 }30 31 public String getPassword() {32 return password;33 }34 35 public void setPassword(String password) {36 this.password = password;37 }38 39 }
Action有一下特点:
- Struts2框架中Action是一个POJO,没有被代码污染。
- Struts2中的Action的execute方法不依赖于servlet API,改善了Struts1中耦合过于紧密,极大方便了单元测试。
- Struts2的Action无须用ActionForm封装请求参数。
5 添加框架核心配置文件struts.xml文件:在WEB-INF/classes文件夹下创建struts.xml。
在struts2-core-2.3.16.jar中有strust-defalut.xml.我们需要继承它。
1 2 5 67 8 13 14 159 12/jsp/success.jsp 10/jsp/error.jsp 11
- 在action标签中定义了name和class。name属性对应的是用户URL请求中的action名,class属性是处理请求的实现类(注意:要包含完整路径)。
- result标签定义逻辑视图和物理视图之间的映射,在我们的Action中,如果返回的字符串是"success”则由对应的success.jsp页面进行处理;如果返回的字符串是"error”则由error.jsp页面进行处理。
6 编写界面
6.1 login.jsp
1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <% 3 String path = request.getContextPath(); 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 5 %> 6 7 8 9 1032 3311 12 My JSP 'Login.jsp' starting page 13 14 15 16 17 18 19 22 23 24 25 26
6.2 success.jsp
登录成功!
6.3 error.jsp
登录失败!
整体: