STRUTS

传统的Java web:前端

 

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

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

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

 

 

Struts的功能

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

 

 

Struts一、2的区别

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

 

 

 

IDEA下使用Struts2示例

一、建立项目tomcat

须要先配好jdk、tomcat。安全

把struts2核心的8个jar包添加进来,并不推荐Download,可能会出问题。架构

 

 

二、打开项目结构,修复问题框架

 

 

三、打开web.xmljsp

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

删掉,输入StrutsPrepare就出来了

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

 

 

四、编写前端页面,用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方法把请求参数赋给相应的成员变量。咱们可直接使用某个字段,使用时会自动调用getter方法获取对应的值。

execute()须要返回一个String类型的值,能够本身写,也可使用Struts预约义的常量,好比SUCCESS即"success"。

 

 

在struts.xml中配置action:

复制代码
1 <struts> 2 <package name="test" namespace="/" extends="struts-default"> 3 <action name="login" 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>配置一个action,name指定action名称,通常使用action类名的Action以前部分的camel写法,class指定action所在的类。

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

 

 

设置表单的action属性:

action="login.action"

用指定的action来处理表单。

 

 

若是首页不是index,还须要在web.xml中配置首页:

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

 

 

ok。

相关文章
相关标签/搜索