Struts 2入门
1:环境搭建
①:导jar包
一些jar包:链接:https://pan.baidu.com/s/1OPlz_ekP-LIGmhNSAiMM_w
提取码:isuh
②:配置web.xml
<filter>
<filter-name>struts</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class><!-- Strutsjar包里面的一个类,相当于中央控制器-->
</filter>
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern><!-- 过滤所有请求,实际开发中一般过滤.action请求 -->
</filter-mapping>
③: struts.xml(核心配置文件)
在根目录下新建资源文件包,放置三个xml文件
struts.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<include file="struts-default.xml"></include>
<include file="struts-base.xml"></include>
<include file="struts-sy.xml"></include>
</struts>
struts-base.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.devMode" value="true" />
<constant name="struts.configuration.xml.reload" value="true" />
<constant name="struts.i18n.reload" value="true" />
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- 抽象包 一般定义是为了被继承 -->
<package name="base" extends="struts-default" abstract="true">
<global-allowed-methods>regex:.*</global-allowed-methods>
</package>
</struts>
struts-sy.xml(配置相对应的action,相当于MVC框架下得mvc.xml):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<!-- namespace:在内存中划分具体的控件
name:给package取个名字 -->
<package name="sy" extends="base" namespace="/sy">
<action name="helloAction" class="com.zking.struts_base1.web.HelloAction">
<result name="success">/success.jsp</result>
</action>
<action name="calAction_*" class="com.zking.struts_base1.web.CalAction" method="{1}">
<result name="rs">/rs.jsp</result>
</action>
</package>
</struts>
struts.xml的DTD验证不起作用的解决办法(其他dtd约束不起作用,也适用)
1.在项目中新建一个文件夹DTD,然后将struts2.dtd文件复制到此文件夹中
2.然后选择菜单“window--->preferences--->MyEclipse--->Files and Editors--->XML--->XML Catalog
3.点击“ADD”,然后修改弹出窗口中的内容
location:点击选择dtd的文件路径(Workspace)
key Type选择下拉框中的URI即可、key的值是从struts.xml文件复制过来的
后台子控制器获取jsp所传递的参数的几种形式
1.implements ModelDriven<Cal>
2.通过get/set方法获取jsp页面的值
3.通过对象导航的方式获取jsp页面的值
后台子控制器向jsp传值的几种形式
1.通过传统的作用域传值(与J2EE容器交互)
就是获取到四大作用域即可
public class ParamAction implements ServletRequestAware, ServletResponseAware{
private HttpServletResponse resp;
private HttpServletRequest req;
private HttpSession session;
private ServletContext application;
@Override
public void setServletResponse(HttpServletResponse arg0) {
this.resp=arg0;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
this.req=arg0;
this.session = arg0.getSession();
this.application = arg0.getServletContext();
}
2.通过值栈进行传值
只需要在子控制器提供set/get方法,即可实现传值的功能(calAction)