① struts2怎样从jsp页面传值到action中
jsp页面跟通常的html传值一样 通常有两种方式
1.form表单传值
2.url方式传值
通常后台接受前端传值 都是用的request.getParameter("username")
但是在struts框架下 可以用set方法让action自动接收 也更方便
所以 action接收值也有两种方式
1.request.getParameter("username")
2.set
下面记录多种组合方式,大家可以根据相应的情况选择使用:
方式一 jsp中form传值username,password, action中set方法接收
[java]view plain
<%@taglibprefix="s"uri="/struts-tags"%>
[java]view plain
<formaction="getIp/login"method="post"name="form1">
用户名:
<s:textfieldname="username"/>
<br/>
密码:
<s:passwordname="password"/>
<br/>
<s:submitvalue="提交"/>
</form>
login.jsp
[java]view plain
<%@pagelanguage="java"import="java.util.*"pageEncoding="utf-8"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"
+request.getServerName()+":"+request.getServerPort()
+path+"/";
%>
<%@taglibprefix="s"uri="/struts-tags"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>loginpage</title>
</head>
<body>
<formaction="getIp/login"method="post"name="form1">
用户名:
<s:textfieldname="username"/>
<br/>
密码:
<s:passwordname="password"/>
<br/>
<s:submitvalue="提交"/>
</form>
</body>
</html>
loginAction.java
[java]view plain
packageaction;
importcom.opensymphony.xwork2.ActionSupport;
{
/**
*登录
*/
=-6797327769546503535L;
privateStringusername;
privateStringpassword;
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
publicStringexecute(){
System.out.println("username:"+username);
System.out.println("password:"+password);
returnSUCCESS;
}
}
spring文件
action.xml
[java]view plain
<?xmlversion="1.0"encoding="utf-8"?>
<struts>
<packagename="getIp"extends="json-default"namespace="/getIp">
<!--<actionname="testJson"class="testAction">
<resulttype="json"></result>
</action>
<actionname="testJsp"class="testAction">
<resultname="success">/index.jsp</result>
</action>-->
<actionname="login"class="login">
<resulttype="json"></result>
</action>
</package>
</struts>
② jsp页面怎么跳转到action方法中
1、如果想在action中获得值,就必须先从jsp跳转到action,然后action返回的时候被struts拦截,匹配result时,就可以控制跳转到另外一个jsp,这当中的过程看起来很长,但是对于计算机来说是非常短暂的,是经过action才跳转到第二个jsp。
2、还有一种方式是用 ajax 将要传递给action的数据以url+ 参数 + 参数值 的方式(即get方式)传递给后台action,但是这个action不能匹配struts当中的result,否则会报错,最好是定义void方法来获得页面数据,request取值,response响应
③ struts2在jsp页面上怎么访问action
如果你要引用action执行后的页面,就用s:action 加上executeResult="true"这个属性就可以了 <s:action id="这可以不要,id是jsp直接引用action里用的" name="action名" executeResult="true"> <s:param name="" value=""/>这是action的参数 </s:action>
④ 基于struts2的JSP页面执行action跳转新的jsp页面之后,新的jsp页面如何自动显示出执行action后的内容
不是太理解你的意思,
信息可以存在session中,在jsp页面里读出来
action:
public String list() {
try {
List<Voter> list = service.getAll();
ActionContext.getContext().getSession().put("voterList", list);
return "list";
} catch (Exception e) {
e.printStackTrace();
return ERROR;
}
}
list.jsp:
<c:forEach var="voter" items="${voterList }" varStatus="st">
<tr>
<td>${voter.userId }</td>
<td>${voter.userName }</td>
</tr>
</c:forEach>
struts.xml:
<action name="user_*" class="wangli.action.UserAction" method="{1}">
<result name="login">login.jsp</result>
<result name="loginSuccess" type="redirectAction">user_list</result>
<result name="list">/WEB-INF/list.jsp</result>
<result name="registerSuccess">registerSuccess.jsp</result>
</action>
⑤ 在Struts2中,怎么由jsp跳转到action中
哥们,你的理解有很大问题呀
不 jsp 跳到 action 取值
而是你应该访问action 然后返回你的jsp才能有值。
帮你梳理一下,什么是访问吧,呵呵
首先,浏览器访问一个地址,被你的servlet 获取,至于是不是访问jsp 还是访问action这个一般看你配置文件怎么配了,当然不会有人将action的标志写为 “jsp”,一般写.action 或者.do
那么如果你的拦截器也没有拦截jsp的话,(不明白拦截器可以忽略本段),会根据你的后缀名判断你要访问什么。
其实不管你访问什么,都可以认为最后通过 response 返回了一个字符串,返回文件不算。
那么这个字符串的构成不外乎有几种
1,全部静态,一般是 html,即直接指向一个静态页面,当然也可以通过actiong 转向一个html
2,全部动态,由java拼接一个字符串,返回,ajax请求一般是这种情况。当然,若全天是一个submit式提交,希望返回一个页面,那么你的字符串将被当作html代码展示。
3,半动态,也就是jsp方式,jsp中的html部分是静态不动的,其他jsp标签,如你写的s标签(s标签是strut的标签,说白了是jsp标签的一种),jsp标签会根据他的定义执行对应的java代码进行拼装。然后将拼装好的部分与原来的html部分结合,返回给浏览器。
无论是哪种,浏览器拿到的都是 静态的,也就是浏览器并不知道你后台做了什么,只是拿到一个已经拼装好了的html,(这个html原来可能就不需要拼装对应第一种,全部都是拼装的对应第二种,一半是拼装的对应第三种)
但是你直接访问jsp的问题是,当前sesson中没有你写的pages.pageList,所以啥也没有。
所以要在页面上显示列表有2种方案,这两种方案都很常见。
1,访问一个action,action先通过java取得值,将值付给某些变量,对你的来说就是pages.pageList,再将请求重定向到你的jsp,那么jsp中s标签就被拼装成你要值返回了前台。
页面上就有 表格了。
2,访问一个jsp,而这个jsp中没有你现在写的s标签,但是当jsp全部加载完成后,通过ajax向后台申请数据,再通过js(javascript)修改你前台的页面,展示出你要的结果,
随着这些年的发展,第二种方案越来越流行,其实怎么用还是要看自己。