-
<result>/success.jsp</result> 与<result>success.jsp</result>的区别 带斜杠是:绝对路径,/代表项目根目录. 无斜杠:相当于执行该action对应的package的namespace指定的路径查看全部
-
结果类型INPUT的效果 addFileError放在action中的方法里,可以通过if语句来判断,把错误信息放在addFieldError("","")方法中,然后返回响应的错误视图. 可以把此判断放在继承父类的validate()的方法中,validate()方法会对本Action中所有后台方法做验证,因为validate()方法的返回值为void,因此当在validate方法中遇到了addFieldError("","")语句就会自动跳转到name为input的视图,所以result中必须存在name为input的视图. 当出现错误时,可以提示用户,在jsp页面合适位置中使用<s:fielderror name=""></s:fielderror>标签,该标签name属性为addFieldError方法中的参数name,在jsp页面中使用struts标签,需要导入标签库 语句:<%@ taglib prefix="s" uri="/struts-tags" %> 在struts.xml中: <action name="loginAction" class="com.imooc.login"> <result name="input">/login.jsp</result> //则当发生错误时会自动跳转到登录页面 <result name="success">/success.jsp</result> </action> 在action中: public String login(){ if(username==null||"".equals(username.trim())){ this.addFileError("usernameerror","用户名不能为空!") return ERROR; } return SUCCESS; }查看全部
-
假设用户类中还有一个图书清单(List booklist),那么在表单子标签name值要用booklist[index]才能传递到User类的List里面. javabean中: public class User{ private String username; private String password; private List<String> booklist; 生成get/set()方法 } 在表单中: <form action="loginaction" method="post"> 用户名:<input type="text" name="username"/> 密码:<input type="password" name="password"/> 书籍1:<input type="text" name="booklist[0]"/> 书籍2:<input type="text" name="booklist[1]"/> <input type="submit" value="提交"/> </form> 在Action中通过: user.getBooklist().get(0);就可以获取到书籍1的信息.查看全部
-
在Action接收参数的方法 有三种方式: 1.使用Action的属性接收参数 2.使用DomainModel接收参数 3.使用ModelDriven接收参数 (方法三) 使用ModelDriven接收参数 需要action实现ModelDriven接口.此接口会有泛型,实现时要把javabean类型写到泛型.并且要实现此接口的getModel()方法.如果使用ModelDriven方法的话,那么在action中就不能有属于javabean的get/set()方法.并且javabean必须要实例化.不需要在表单子标签的name值指定javabean前缀. 在Action中: loginaction extends ActionSupport implements ModelDriven<User>{ private User user=new User(); //不能有getUser()、setUser() public User getModel(){ return user; } private String login(){ System.out.println(user.getUsername()); return SUCCESS; } }查看全部
-
因为方法一需要在action中为每个表单子标签都创建一个成员变量,当项目中有很多表单时便会很繁琐.因此可以使用方法二,通过DomainModel的方式接收参数. 使用DomainModel接收参数(面向对象的思想) 首先创建一个javabean.在javabean中对应创建需要用到的表单子标签的name属性值.在Action类中需要创建一个javabean类类型的成员变量. 在表单子标签的name值需要加上在action中类类型成员变量前缀,否则参数传去Action的时候不知道是赋值在Action的普通成员变量,还是Action中类类型的成员变量(即对象). 表单中: <form action="loginaction.action" method="post"> <input type="text" name="user.username" /> <input type="text" name="user.password" /> <input type="submit" value="提交"/> </form> javabean: public class User{ private String username; private String password; 生成get/set()方法 } action中: private User user; //定义javabean类类型的成员变量 生成get/set()方法 private String login(){ System.out.println(user.getUsername); //输出用户提交的用户名 return SUCCESS; }查看全部
-
在Action接收参数的方法 有三种方式: 1.使用Action的属性接收参数 2.使用DomainModel接收参数 3.使用ModelDriven接收参数 也可以使用HttpServletRequest方式来接收参数. 在jsp页面中有一个登陆案例,有一个表单提交给一个action,有用户名与密码,怎样在action当中获取到用户输入的参数值. 方法一,通过Action的属性接收参数. 在表单中有: <input type="text" name="username" /> 在Action中需要创建一个username的成员变量,当此成员变量的属性名与表单中<input>标签的name值相同时,就会匹配起来并赋值.此时便可以从action当中获取到用户提交的用户名.查看全部
-
Struts2后缀. 可以通过在properties文件中添加struts.action.extension="自定义后缀" 来修改action访问的后缀.可以为空,那么访问的时候则不需要后缀,直接action名即可. (在不做任何后缀配置修改的时候,不加后缀访问action都是可以的,要是加了后缀配置,则只能当value为空时才能不加后缀来访问action) 可以在struts.xml中添加<constant name="struts.action.extension" value="html"></constant>即可.那么访问action的时候后缀就是html,并不是action. http://localohost:8080/HelloWorld/helloworld.html 可以配置多个请求后缀,即可以通过几种后缀来访问到action.查看全部
-
处理结果查看全部
-
接收参数查看全部
-
动态方法调用的方式查看全部
-
Struts2工作原理,2.1版本之后FilterDispatcher改为StrutsPrepareAndExecuteFilter查看全部
-
访问Servlet API的三种方式查看全部
-
Action搜索顺序查看全部
-
action标签没有指定class属性的话,系统会默认调用com.opensymphony.xwork2.ActionSupport类的execute()方法,该方法代码是: public String execute() throws Exception { return SUCCESS; } 返回名为success的result页面.或者返回没有name属性的result页面.查看全部
-
默认Action: 为解决当别人访问某个Action时找不到与之对应的Action,此时默认Action就会顶替原先要访问的Action. 配置默认Action 也需要在包下配置 <package> <default-action-ref name="error" ></default-action-ref> //两个name值是对应的关系. <action name="error" class="com.imooc.action" > <result>error.jsp</result> </action> </package>查看全部
举报
0/150
提交
取消