Struts2整理(第一天)
1、struts2 的使用流程
分包如下:
1》导入struts的jar包,
2》配置web.xml文件(前端控制器fc),在web.xml中加入Struts2MVC框架启动配置( 拷贝)struts2框架是通过filter启动的;必须写配置文件。
<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>
3》、配置struts2 文件------在src下新建struts.xml(业务逻辑控制器)。
配置struts.xml:(复制粘贴)
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd
">
<struts>
<package name="p2" extends="struts-default">
<action name="add" class="com.zk.action.studentAction" method="add">
<result name="success">/show.jsp</result>
</action>
</package>
</struts>
注意:
1:package必须写,作用是用于管理一组业务功能相关的action
2:package中必须指定name属性,属性值随意写,但必须唯一。
3:package的命名空间,即它的namespace属性;
4》写action。在src下新建包com.zk.action,新建studentAction。
public class studentAction implements RequestAware{
private student student;
/**
* 添加
*/
public String add(){
System.out.println("add");
studentdao sd = new studentdaoimpl();
sd.add(student);
List<student> list= sd.show();
req.put("slist", list);
return "success";
}
public student getStudent() {
return student;
}
public void setStudent(student student) {
this.student = student;
}
@Override
public void setRequest(Map<String, Object> req) {
// TODO Auto-generated method stub
this.req=req;
}
注意:
1:action应与struts.xml中的action的class属性值保持一致。
2:实现RequestAware并重写。
3:方法add应与struts.xml中的action的method属性值保持一致
4:实例对象,并提供get set 方法
5:req.put();必须写。作用是传值。转发
6:类中的add()方法返回值必须为String ,方法不能带参数
5》此时,struts2的使用流程基本完成。功能的代码跟以前一样,连接数据库的操作也跟之前servlet的方法相同。所有方法完成后,输入地址测试。:http://localhost:8080/项目名/页面名
2、struts2 action 通配符的使用
(适合于:多个方法执行完毕最终都去一个页面)使用通配符*定义action,可以有效的减小配置文件的规模。
下面用action通配符来写一个学生增删改查的例子
1、导入jar包
2、配置web.xml
3、配置struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd
">
<struts>
<package name="p2" extends="struts-default">
<action name="studentAction_*" class="com.zk.action.studentAction"
method="{1}">
<result name="success">/show.jsp</result>
<result name="modify">/modify.jsp</result>
</action>
</package>
</struts>
4、写action类中的过程(注意返回值。返回值应与result的name属性值相同)(多个方法执行完毕最终都去一个页面的都用同一个name 属性值)
5、写dao和daoimpl
6、页面中action的值应该加上action的全名
<form action="${pageContext.request.contextPath }/studentAction_modify">
<input type="hidden" name="student.id" value="${student.id}"><br><br>
姓名:<input type="text" name="student.name" value="${student.name}"><br><br>
年龄:<input type="text" name="student.age" value="${student.age }"><br><br>
爱好:<input type="text" name="student.hobby" value="${student.hobby }"><br><br>
<input type="submit" value="提交">
</form>
7、完成。输入地址测试。:http://localhost:8080/项目名/页面名