1、struts的配置
2、struts的动态调用方法
3、struts的传参的三种方式
4、struts与tomcat的集成(合作)
二、struts的配置1、步骤:(与自定义mvc相比较)
1、建立依赖--->导入jar包(mvc是手动导入jar包,而struts直接在Maven的pom.xml文件中写好相关代码就可以了)
新建一个struts项目后,同样和Maven一样,首先要将web中的版本改为3.1
其次将java版本从2.3改为3.1,Dymanic的版本从1.5改为1.8(在这里纠正一点,之后完成改完版本之后,填写webapp时要写好绝对路径,就是src/main/webapp,而不是直接写webapp)
之后就要改变jdk的一个版本,上次与大家分享的是手动改造,今天与大家分享用代码改造,将以下代码复制到maven中的pom.xml文件中即可。当然在复制之前,要先写好
org.apache.maven.plugins maven-compiler-plugin3.7.0 1.8 1.8 UTF-8
最后就是struts与Tomcat的集成:将以下代码写在
javax.servlet javax.servlet-api4.0.1 provided org.apache.struts struts2-core2.5.13
2、做好相关配置--->只要配置过滤器(mvc要到web.xml中配置好中央控制器,struts只要写好过滤器)
web.xml:(其中
struts org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter struts *.action
3、开发:struts和自定义mvc一样的都要写好子控制器继承Actionsupport
三、struts的动态调用方法与自定义mvc的方法相比,struts的动态调用方法更加灵活;struts的配置文件有三个(三个配置文件相同于自定义mvc的配置文件,三个配置文件相辅相成),自定义mvc的配置文件只有一个(web.xml)
1、配置文件(最主要的配置文件struts-sy.xml):
struts是调用的动态方法,理所当然写法与自定义mvc的写法不一样,如下图所示,在action中的name属性中,写法是/demo1_*,但是在自定义mvc中是直接写/demo1,class表示要进入的类。
第二大不同:
在struts-sy.xml中出现result节点,表示最后进入的结果界面。
第三大不同:
图中还出现了method属性,{1}表示取访问路径的第一个方法,改1是对应 /demo1_*后面的*
注意:有一个*,自然而然的想到了有两个*的写法/demo1_*_*,其中第一个*同样表示方法,第二个方法就表示要跳转的结果界面了
有两个*的写法:
2、子控制器类:对应的方法
public String add() throws Exception {
System.out.println("add方法");
return "bookEdit";
}
public String del() throws Exception {
System.out.println("del方法");
return "bookEdit";
}
public String edit() throws Exception {
System.out.println("edit方法");
return "bookEdit";
}
3、bookEdit界面:
4、实现类Demo1.jsp:
struts方法调用 新增
删除
修改
5.运行结果:
运行成功:
四、struts的传参的三种方式:
三种方式:
1、Modeldriven传参
2、set方式传参:
3、根据对象属性传参:
1、Modeldriven传参:在子控制类写好实现modeldriven类的代码:
实体类:
package com.zking.one.entity;
public class User {
private String uid;
private String uname;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public User() {
// TODO Auto-generated constructor stub
}
@Override
public String toString() {
return "User [uid=" + uid + ", uname=" + uname + "]";
}
public User(String uid, String uname) {
super();
this.uid = uid;
this.uname = uname;
}
}
demo1.jsp:
struts传参方式 Modeldriven传参
通过set方法传参
通过对象属性
Demo1Action:
public String list() throws Exception {
System.out.println("list方法");
System.out.println(user1);
运行效果:
2、set方式传参:User中没有sex这个属性,那么就独自在action中写一个sex,生成get和set方法
Demo1Action:
demo1:
通过set方法传参
运行效果:
3、根据对象属性传参:同时在Demo1Action中定义一个user叫做user2并且写好user1和user2的get和set方法,但是并没有new,同时也能够运行出效果:
Demo1Action:
demo1:
通过对象属性
运行结果:
五:struts与tomcat的集成(合作)今天写struts项目的目的就是要进行测试:1、两种方式:
1、直接定义ServletActionContext.getRequest()进行集成
2、在Demo1Action类中实现ServletRequestAware ,ServletResponseAware两个接口进行集成。
2、直接定义ServletActionContext.getRequest()进行集成:
Demo1Action:
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("age", 20);
bookEdit.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
成功界面。。。。
${ age }
运行结果:
3、在Demo1Action类中实现ServletRequestAware ,ServletResponseAware两个接口进行集成:
在Demo1Action:
public String list() throws Exception {
System.out.println("list方法");
System.out.println(user1);
System.out.println(sex);
System.out.println(user2);
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("age", 20);
req.setAttribute("name", "sjx");
return "bookEdit";
}
并且重写setServletRequest和setServletResponse方法:
运行结果:
运行成功:
总结:struts框架和自定义MVC相比起来,struts框架用起来更加方便,在今天分享的 知识中,第二点struts的动态调用方法更加的新颖,其中struts框架的传参方式比自定义MVC更加丰富,自此可见struts框架的强大之处。今天的知识就分享到这里了。希望对大家有帮助,有疏忽之处还请大神多加指点!


