-
MVC。。。。。
查看全部 -
处理结果类型——type属性(result标签的属性)
type的默认值为dispatcher,这个类型支持JSP视图技术(跳转到相应JSP)。
struts2支持多种视图技术,例如JSP、Valocity(模板引擎)、FreeMarker(模板引擎)等。
struts2-core核心包:struts-default.xml有个包声明了返回的结果类型,
chain:链式结果类型,将action和另外一个action链接起来。
dispatcher:相当与forward服务器内部转发。
redirect和redirectAction:相当于请求重定向,重要问题——>重定向会丢失请求参数。
plainText:显示某一界面的原始代码。
stream:一般用于文件的下载。
查看全部 -
处理结果类型(处理结果是通过在struts.xml使用<result/>标签配置结果)
根据位置的不同,分为两种结果:
局部结果:将<result>标签作为<action/>元素的子元素来处理。
全局结果:将<result/>作为<global-result/>元素的子元素的来处理,<global-result/>相当于公共的处理结果集。
例如:<package name="">
<global-results>
<result name="">..</result>
<result name="">..</result>
<global-results>
</package>
<result>标签的子元素<param name="loaction" parse="">resource</param>:
name属性的location:定义了该视图对应的实际视图资源。
parse属性:是否可以在实际视图名字中使用OGNL表达式,struts默认是true。
OGNL:Object-Graph Navigation Language,很强大的表达式语言。
${#request.path获取值},前提是已经对request存入值。(可以在struts.xml中使用,也可以在JSP中使用。(实际项目中不是很常用)
查看全部 -
处理结果类型
struts2处理流程
用户请求(前提在web.xml中配置拦截,通过路径)——>Struts框架(通过struts.xml配置)——>控制器Action(返回string类型逻辑视图字符串)——>Struts框架(通过result标签)——>视图资源。
Struts1返回结果类型:ActionForward。
Struts2返回结果类型:String(提供代码复用性,有利于框架分离)。
result标签带/和不带/的区别
带/表示项目的上下文路径。
不带/表示执行action的namespace指定的路径。
处理结果类型(com.opensymphony.xwork2.Action)
SUCCESS:Action正确的执行返回,返回相应试图,success是name属性的默认值。
NONE:表示Action正确的执行完成,但并不返回任何视图。
ERROR:表示Action执行失败,返回到错误处理视图。
LOGIN:Action因为用户没有登陆的原因没有正确执行,将返回该登陆视图,要求用户进行登陆验证。
INPUT:Action的执行,需要从前端界面获取参数,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回到该视图。
查看全部 -
处理结果类型(com.opensymphony.xwork2.Action)
INPUT:Action的执行,需要从前端界面获取参数,一般在应用中,会对这些参数进行验证,如果验证没有通过,将自动返回到该视图。
自动跳转到input界面方式:
1、传入的参数类型转换错误,自动跳转INPUT界面(int——>String)
举例:前端输入的数据被赋值给实体类时类型不一致。
2、校验时,调用的this.addFieldError(fieldName,errorMessage)它是添加表单的错误,这里面有值,如果被执行,代表校验不通过,也会自动跳转INPUT界。
如果不想手动返回INPUT,则要把代码写在validate()方法里。
user.getUsername()==null和"".equals(user.getUsername())这两个条件判断的区别?
因为未经第一个判断直接进行第二个判断,当用户名为null时会发生空指针异常
第一个判断用户名是否为null(空)
第二个判断用户名是否为""(空字符串)""并不等于null
查看全部 -
ServletAPI:HttpServletRequest、HttpServletResponse,和ServeltContext对应JSP内置对象为Request、Response、Application(Servlet可以直接调用HttpServletRequest和HttpServletResponse,因为doGet、doPost方法)。
Struts:Struts不提供ServletAPI耦合,Struts的Action的execute方法不存在任何参数。
Struts提供的三种访问ServeltAPI方式:
方式一:ActionContext(上下文类,通过它可以获得servletAPI ,所有的对象都是以Map进行存储的)。
方式二:实现***Aware接口。
方式三:ServletActionContext(与方式一相似)。
查看全部 -
动态方法调用:解决一个Action对应多个请求,以免Action太多。
方法一:指定method属性。
编写多个action标签,编写多个name和method属性。
方法二:感叹号方式。(官方不推荐)
步骤1:开启常量值——<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
步骤二:<action>标签里不写method属性,访问方式——http://localhost:8080/项目名/action名+!+方法名.action
方法三:通配符方式。(官方推荐使用)
查看全部 -
导入包
web.xml添加
<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>*.action</url-pattern> </filter-mapping>
.src下创建struts.xml
<struts> <package name="default" namespace="/" extends="struts-default"> <action name="helloworld" class="com.action.HelloWorldAction"> <result>/result.jsp</result> </action> </package> </struts>
创建action类
public class HelloWorldAction extends ActionSupport { @Override public String execute() throws Exception { System.out.println("HelloWorldAction"); return SUCCESS; } }
查看全部 -
Struts2动态方法调用
1. 通过method 指定方法
2. 使用! 例如: http:localhost:8080/Struts/helloworld!add.action
必须设置<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
3.使用通配符 * (推荐使用)
例如:<action name="helloworld_*_*" method="{1}" class="xxx">
<result name="{1}">{1}.jsp</result>
</action>
查看全部 -
MVC模式
查看全部 -
struts.xml里标签package里元素必须按照一定的顺序排列:
result-types
interceptors
default-interceptor-ref
default-action-ref
default-class-ref
global-results
global-exception-mappings
action*(就是所有的action放到最后)查看全部 -
struts2.5 为了增加安全性,在 struts.xml 添加了这么个属性:<global-allowed-methods>regex:.*</global-allowed-methods>
即
<package name="default" namespace="/" extends="struts-default">
<global-allowed-methods>regex:.*</global-allowed-methods>
<action name="helloworld" class="com.imooc.action.HelloWorldAction">
<result>/result.jsp</result>
<result name="add">/add.jsp</result>
<result name="update">/update.jsp</result>
</action>
查看全部 -
版本:struts-2.5.16
1.代码:<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
2.路径调整了:web.xml包路径
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
3.多导个log4j个jar包查看全部 -
第三步里 的request 是实现了 ServletRequestAware里的setServletRequest方法
具体如下@Override public void setServletRequest(HttpServletRequest arg0) { // TODO Auto-generated method stub request = arg0; }
查看全部 -
struts2工作原理
查看全部
举报