设为首页 加入收藏

TOP

Struts2 入门
2019-09-17 18:32:39 】 浏览:28
Tags:Struts2 入门

 

传统的JavaWeb使用Servlet写后台,Struts主要是代替Servlet写后台的,用于处理客户端请求。

Struts框架抽象出后台处理的通用步骤,封装为一个框架,简化了后台编程。

与Servlet相比,Struts具有先进的架构、编程思想。

 

 

Struts的功能

  • 自动封装参数
  • 参数校验
  • 结果处理(转发、重定向)
  • 国际化
  • 显示等待页面
  • 防止表单重复提交

 

 

Struts1、2的区别

  • Struts1、2技术上关系并不大
  • Struts1基于Servlet,而Servlet是线程不安全的,所以Struts1线程不安全
  • Struts2基于Filter,前身是WebWork

 

 

 

IDEA下使用Struts2示例

1、创建项目

把struts2核心的8个jar包添加进来,不要IDEA下直接Download Structs的核心jar包,因为直接Download的jar包只有7个,少了一个,部署时会出错。

 

 

 

 

2、打开项目结构,修复问题

 

 

3、打开web.xml

随着Struts的版本更替,Struts核心过滤器类的位置也在变化,需要手动修复。

输入SPAEF,StrutsPrepareAndExecuteFilter这个类就出来了,把原来的删掉。

<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>

 

 

4、编写前端页面,用Action处理请求,在struts.xml中配置Struts(主要是action)。

比如我们在index.jsp中写一个表单:

1 <form>
2     请选择登录角色:<br />
3     <input type="radio" name="role" value="student">学生
4     <input type="radio" name="role" value="teacher">教师<br />
5     <button type="submit" >登录</button>
6   </form>

 

 

src下新建包action,包下新建类LoginAction:

 1 public class LoginAction extends ActionSupport {
 2     private String role;
 3 
 4     public void setRole(String role) {
 5         this.role = role;
 6     }
 7 
 8     public String getRole() {
 9         return role;
10     }
11 
12     @Override
13     public String execute() throws Exception {
14         if (role.equals("teacher"))
15             return "teacher";
16         else if (role.equals("student"))
17             return "student";
18         else
19             return "error";
20     }
21 }

 

需要继承ActionSupport类,重写execute()方法。当请求提交到这个action时,会自动调用execute()来处理。

将要处理的字段写成成员变量,并设置对应的setter、getter方法,成员变量名需要和请求传过来的参数名相同。上面的表单会传递一个参数role,这个action接受到请求时,会调用setter方法把请求参数赋给相应的成员变量。

execute()需要返回一个String类型的值,可以自己写,也可以使用Struts预定义的常量,比如SUCCESS即"success"。

 

 

在struts.xml中配置action:

1 <struts>
2     <package name="action" namespace="/" extends="struts-default">
3         <action name="loginAction" class="action.LoginAction">
4             <result name="teacher">/teacher.jsp</result>
5             <result name="student">/student.jsp</result>
6             <result name="error">/error.jsp</result>
7         </action>
8     </package>
9 </struts>

<package>配置一个包,name指定包名,namespace、extends都是固定的值。此处的包是概念上的包,比如把订单模块的action放在一起,并不是指src下实际的包。

<action>配置一个action,name指定action名称,class指定action所在的类。

<result>设置视图。action相当于控制器servlet,处理请求,并调用相应的视图来显示结果。

 

 

设置表单的action属性:

action="loginAction"

可以直接写action的name,也可以带后缀.action, action="loginAction.action" 。

 

 

如果首页不是index,还需要在web.xml中配置首页

<welcome-file-list>
        <welcome-file></welcome-file>
    </welcome-file-list>

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java描述设计模式(02):简单工厂.. 下一篇传入一个Map<String,Long> ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目