1.0、Struts2的简单搭建方法

一、Struts2:是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet;用于jsp页面与Java代码之间的交互。

  1、核心:Filter拦截器,对所有的请求进行拦截。

  2、工作流程:http://localhost:8080/项目名/请求 --> 被web.xml中的Struts拦截器拦截到strus.xml文件-->找到对应的action里面对应的name,也就找到了对应的类-->通过action里面的method参数找到对应的执行方法,并返回一个字符串-->找到action标签中的result标签中的name与返回值相匹配-->跳转到向应的jsp页面。

  3、配置

      1、将strus2所需的jar包添加到 项目名\WEB-INF\lib  中

      2、复制struts.xml文件到 src目录下

      3、写action代码。注意:

        a)、Struts的action方法都是待返回值的方法

        b)、 在action类中需要实现modelDriven 来自动的将页面参数注入到对象中去。因此jsp页面的标签中的name属性必须跟Java类的属性字段完全对应。

      4、在web.xml文件中编写Strus2的Filter核心拦截器

      5、在strust.xml文件中去配置package标签中的属性。

二、Struts2的简单搭建:

  1、新建一个web项目

  2、新建一个Person类     

 package com.st.bean;

 public class Person {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

  3、将Struts2所需的jar包考到lib文件下

  4、在web.xml文件中编写struts2的核心拦截器,这里面的类容最好直接拷贝不要手敲,容易出错。

   <!-- **********************************  -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ********************************** -->

  5、在index.jsp编写HTML代码,注意标签的name值和Person类的字段相对应

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Struts2核心拦截器示例</title>
</head> <body>
<form method="post" action="<%=request.getContextPath() %>/person/personAdd">
<table>
<tr>
<td>ID:</td>
<td><input type="text" name="id" value="${id}"/></td>
</tr>
<tr>
<td>姓名:</td>
<td><input type="text" name="name" value="${name}"/></td>
</tr>
<tr>
<td>年龄:</td>
<td><input type="text" name="age" value="${age}"/></td>
</tr>
<tr>
<td><input type="submit" /></td>
<td><input type="reset" /></td>
</tr>
</table>
</form>
</body>
</html>

  6、拷贝一个struts.xml文件到src文件下,修改package标签中的属性值,如果action标签中不指定method属性,那么会默认的执行execute()方法。

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <!-- <struts>
<package name="" namespace="url的中间路径" extends="struts-default">
<action name="访问的路径" class="对应的action类" method="类里面对应的方法" >
<result name="action方法里面返回的字符串" >对应的jsp页面的路径</result>
</action>
</package>
</struts> -->
<struts>
<package name="person" namespace="/person" extends="struts-default" >
<action name="personAdd" class="com.st.action.PersonAction" method="personAdd">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>

  7、编写action代码:继承PersonAction得到execute()方法,实现ModelDriven接口重写getModel方法

 package com.st.action;

 import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.st.bean.Person; public class PersonAction extends ActionSupport implements ModelDriven<Person>{ private Person person;
//如果不指定action中的method,就会默认的走这个方法
public String execute() throws Exception{
return SUCCESS;
}
//主题在Struts2中的action中的方法都必须返回一个String类型的参数
public String personAdd(){
System.out.println(person.getId()+"---"+person.getName()+"----"+person.getAge());
return SUCCESS;
}
//让jsp页面的name对应的value自动注入到对象中的属性中去。
public Person getModel() {
this.person = new Person();
return person;
}
}
上一篇:CF700C (枚举+tarjan)


下一篇:Java集合:整体结构