Struts 2入门【struts.xml的DTD验证不起作用的解决办法】

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)
 
 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_40979551/article/details/83001040
今日推荐