作者:透明的眼泪2502913707 | 来源:互联网 | 2023-09-13 13:18
struts1了解1.建好工程后,WEB-INFlib加入如下包:commons-beanutils.jar,commons-collections-2.1.1.jar,commo
struts1了解
1.建好工程后,WEB-INF/lib加入如下包:commons-beanutils.jar,commons-collections-2.1.1.jar,commons-digester.jar,commons-fileupload.jar,commons-logging.jar,commons-validator.jar,jakarta-oro.jar,struts.jar
2.WEB-INF下加下如下文件:struts-bean.tld,struts-html.tld,struts-logic.tld,struts-nested.tld,struts-tiles.tld,struts-config.xml(此文件很关键:主要配置此文件)--tld文件在struts.jar/META-INF/tlds包内有
3.修改web.xml:---和
action
org.apache.struts.action.ActionServlet
config
/WEB-INF/struts-config.xml
action
*.do
4.写自已的MyAction要继承Action
5.修改struts-config.xml配置文件--普通XML文件.在第二行增加如下描述:
.
6.然后增加标签---根据MyAction类配置struts-config.xml
7.最好在IE中运行,可能在ECLIPSE自带的浏览器中运行提示404错误.
8.第一次请求时MyAction会实例.后面再次请求就不会实例(即服务不重启情况下就实例一次)
9.jsp页面使用STRUTS1标签--如:<%&#64; taglib prefix&#61;"logic" uri&#61;"http://struts.apache.org/tags-logic" %>
10.STRUTS1资源国际化(在SRC目录下):默认资源文件:MessageResources.properties,中文:MessageResources_zh_CN.properties,英文:MessageResources_en_US.properties.界面来显示.
11.validator-rules.xml需要放到WEB-INF目录下,自定义validation.xml文件来校验JSP表单
12.出现错误:javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection
在web.xml的SERVLET中加上0
13.出现错误:Document root element "struts-config", must match DOCTYPE root "struts".
struts-config.xml文件中的
14.logic:iterator标签的嵌套举例
--addressList是user对象属性(是集合),address是集合的元素.
jspFOREACH标签:--user.messages是集合,message是集合元素
15.界面显示错误,注意要在ACTION中saveErrors(request, messages);
16.struts-config.xml配置文件中可以配置拦截异常(全局和ACTION局部).但好定义一个ACTION的基类(实现异常处理),其它ACTION类都要继承它.出错页面中可以通过pageContext对象得到请求路径/状态码/异常等
WEB-INF受保护目录下jsp之间的互相访问
我们说WEB-INF目录下有 *.xml classes lib 等目录和文件&#xff0c;它们一般都是不让直接访问的。
说明这个目录是安全的&#xff0c;我们回想为什么不把jsp、html等页面文件放进去呢&#xff1f;
这样会不会安全一些呢&#xff1f;大家猜的不错&#xff0c;这样是安全了&#xff08;使用过滤器也可以实现该功能&#xff09;&#xff0c;
有一个路径问题需要解决&#xff0c;使用页面入口问题&#xff0c;如果页面文件放在WEB-INF目录下&#xff0c;用户访问
WEB-INF目录下页面文件会报找不到页面&#xff0c;用户该怎么才能访问到网站页面呢&#xff1f;
如果liandong.jsp放在WEB-INF/jsp目录下&#xff0c;Web Context-root为&#xff1a;liandong那么
1.我们可以在WebRoot下新建index.jsp&#xff0c;其中的代码为&#xff1a;
2.我们可以在struts-config.xml配置代码&#xff1a;
type&#61;"org.springframework.web.struts.DelegatingActionProxy">
action 中代码为&#xff1a;
&#64;Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
// method 2
return mapping.findForward("liandong");
}
index.jsp代码为&#xff1a;link-->liandong
3.我们可以在action 中写代码&#xff1a;
&#64;Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
System.out.println("bbb");
RequestDispatcher rd &#61; request.getRequestDispatcher("WEB-INF/jsp/liandong.jsp");
rd.forward(request,response);
return null;
}
index.jsp代码为&#xff1a;link-->liandong
struts-config.xml配置代码&#xff1a;
type&#61;"org.springframework.web.struts.DelegatingActionProxy">
4.action 中
&#64;Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
// TODO Auto-generated method stub
System.out.println("bbb");
return new ActionForward("/WEB-INF/jsp/liandong.jsp");
}
index.jsp代码为&#xff1a;link-->liandong
struts-config.xml配置代码&#xff1a;
type&#61;"org.springframework.web.struts.DelegatingActionProxy">
还有个问题就是&#xff0c;层叠样式文件、js脚本文件、图片文件的路径
1.页面访问图片
background-image: url(&#39;/liandong/images/bg.bmp&#39;)
2.页面访问层叠样式文件
3.页面访问js脚本文件