Struts2开发流程及详细配置
简介
Struts2是一种基于MVC设计模式的web框架,它是从Struts1框架升级而来。与Struts1相比,Struts2更加灵活、可扩展和易于使用。Struts2的开发流程涉及到安装、配置和实现。该攻略旨在帮助开发者了解Struts2框架的开发流程及详细配置。
开发流程
下面是Struts2的基本开发流程:
-
确认开发环境:开发者需要安装JDK、Tomcat和Eclipse。
-
创建一个Struts2项目:通过Eclipse新建一个Web项目,在项目中导入Struts2包。
-
配置Struts2框架:在项目根目录下创建struts.xml文件,配置该文件以定义应用程序的基础架构,包括拦截器、动作映射和结果。
-
创建动作类:创建动作类,在该类中实现从页面传递的数据并与业务逻辑进行交互,最终生成结果,可以通过在动作类中定义setter和getter方法以获取或设置数据值。
-
创建视图:开发者需要为应用程序定义一个视图或一组视图来呈现结果,这一步需要创建相应的JSP页面。
-
配置访问页面:在struts.xml文件中配置相应的动作映射,将请求映射到具体的动作类及其方法。
-
运行应用程序:在启动Tomcat服务器之前,开发者需要通过配置web.xml文件将Struts2作为Web项目的默认Servlet,这样Tomcat服务器才能将请求转发给Struts2框架进行处理。
详细配置
配置Struts2框架
在src目录下新建struts.xml文件,代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.action.extension" value="html"/>
<constant name="struts.devMode" value="true"/>
<!-- 定义interceptor -->
<interceptors>
<interceptor name="myInterceptor" class="com.example.MyInterceptor"></interceptor>
</interceptors>
<!-- 定义action映射 -->
<action name="hello" class="com.example.HelloAction">
<interceptor-ref name="myInterceptor"/>
<result name="success">/hello.jsp</result>
</action>
</struts>
该文件中包含了以下配置信息:
-
声明默认扩展名,这里为.html。
-
声明是否处于开发模式,默认为false,开发者可以在开发阶段设置为true开启调试模式。
-
配置拦截器,声明了名称为myInterceptor的拦截器。
-
定义动作映射,名称为Hello,将请求映射到HelloAction动作类中的方法。
其中,HelloAction类和MyInterceptor类均需要开发者自行创建。
创建动作类
动作类是Struts2应用程序中的核心组件之一,它处理与业务逻辑相关的操作并响应请求。下面是一个简单的HelloAction示例:
package com.example;
public class HelloAction{
private String message; // 定义message变量
public String execute()throws Exception{
message="Hello world"; // 对message进行值的赋值
return "success"; // 返回结果名
}
public String getMessage(){
return message; // 返回message变量
}
public void setMessage(String message){
this.message = message; // 设置message变量
}
}
通过以上代码,我们可以创建一个执行Hello world字符串输出的操作。
创建视图
开发者需要为应用程序定义一个视图或一组视图来呈现结果,这一步需要创建相应的JSP页面。下面是一个简单的hello.jsp示例:
<%-- hello.jsp --%>
<html>
<head>
<title>Hello page</title>
</head>
<body>
${message}
</body>
</html>
在hello.jsp中定义了一个message变量,它将被动态输出到页面上。
配置动作映射
在struts.xml文件中添加如下代码,将请求映射到HelloAction类及其方法:
<action name="hello" class="com.example.HelloAction">
<result name="success">/hello.jsp</result>
</action>
示例
示例一:Hello World
下面是一个简单Hello World的示例实现:
-
安装JDK、Tomcat和Eclipse。
-
使用Eclipse新建一个Web项目,并导入Struts2包。
-
在该项目的src目录下新建HelloAction类,代码如下:
package com.example;
public class HelloAction{
private String message;
public String execute()throws Exception{
message="Hello world";
return "success";
}
public String getMessage(){
return message;
}
public void setMessage(String message){
this.message = message;
}
}
- 在该项目的WebContent目录下新建hello.jsp页面,代码如下:
<%-- hello.jsp --%>
<html>
<head>
<title>Hello page</title>
</head>
<body>
${message}
</body>
</html>
- 在src目录下新建struts.xml文件,配置动作映射,代码如下:
<action name="hello" class="com.example.HelloAction">
<result name="success">/hello.jsp</result>
</action>
该配置将请求映射到HelloAction类及其方法,并使用hello.jsp页面展示结果。
示例二:表单验证
下面是一个表单验证的示例实现:
-
安装JDK、Tomcat和Eclipse。
-
使用Eclipse新建一个Web项目,并导入Struts2包。
-
在该项目的src目录下新建Person类,代码如下:
package com.example;
import java.util.Date;
public class Person {
private String name;
private Integer age;
private Date birthday;
private String email;
// 这里省略getter和setter方法
}
- 在该项目的src目录下新建RegisterAction类,代码如下:
package com.example;
import com.opensymphony.xwork2.ActionSupport;
import java.util.Date;
public class RegisterAction extends ActionSupport{
private Person person;
public String execute() throws Exception{
// 业务逻辑处理
}
public Person getPerson(){
return person;
}
public void setPerson(Person person){
this.person = person;
}
// 验证表单输入参数
public void validate(){
if(getPerson()!=null && person.getAge()< 0){
addFieldError("person.age","年龄输入不正确!");
}
if(getPerson()!=null && person.getBirthday()==null){
addFieldError("person.birthday","生日不能为空!");
}
if(getPerson()!=null && person.getName()==null || "".equals(person.getName().trim())){
addFieldError("person.name","姓名不能为空!");
}
if(getPerson()!=null && person.getEmail()==null || "".equals(person.getEmail().trim())){
addFieldError("person.email","邮箱不能为空!");
}
}
}
- 在该项目的WebContent目录下新建register.jsp页面,并添加表单验证,代码如下:
<%-- register.jsp --%>
<html>
<head>
<title>Register page</title>
</head>
<body>
<s:form action="register">
<s:textfield name="person.name" label="姓名"></s:textfield>
<s:textfield name="person.age" label="年龄"></s:textfield>
<s:textfield name="person.birthday" label="生日"/>
<s:textfield name="person.email" label="邮箱"></s:textfield>
<s:submit value="提交"/>
</s:form>
</body>
</html>
- 在src目录下新建struts.xml文件,配置动作映射,代码如下:
<action name="register" class="com.example.RegisterAction">
<result name="input">/register.jsp</result>
<result name="success">/success.jsp</result>
</action>
该配置将请求映射到RegisterAction类及其方法,并在该类中添加了表单验证,将错误信息显示在页面上。
结论
以上就是Struts2的开发流程及详细配置的完整攻略,希望对您有所帮助。注意,这只是一个简单的Struts2示例,实际应用中可能需要更复杂的代码和配置。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts2开发流程及详细配置 - Python技术站