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方法接收
- <%@taglib prefix="s" uri="/struts-tags" %>
- <form action="getIp/login" method="post" name="form1">
- 用户名:
- <s:textfield name="username" />
- <br />
- 密 码:
- <s:password name="password" />
- <br />
- <s:submit value="提交" />
- </form>
login.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme() + "://"
- + request.getServerName() + ":" + request.getServerPort()
- + path + "/";
- %>
- <%@taglib prefix="s" uri="/struts-tags" %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>login page</title>
- </head>
- <body>
- <form action="getIp/login" method="post" name="form1">
- 用户名:
- <s:textfield name="username" />
- <br />
- 密 码:
- <s:password name="password" />
- <br />
- <s:submit value="提交" />
- </form>
- </body>
- </html>
loginAction.java
- package action;
- import com.opensymphony.xwork2.ActionSupport;
- public class loginAction extends ActionSupport {
- /**
- * 登录
- */
- private static final long serialVersionUID = -6797327769546503535L;
- private String username;
- private String password;
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String execute() {
- System.out.println("username:" + username);
- System.out.println("password:" + password);
- return SUCCESS;
- }
- }
action.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!-- 指定Spring配置文件的Schema信息 -->
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:mongo="http://www.springframework.org/schema/data/mongo"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.1.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.1.xsd">
- <!-- <bean id="testAction" class="action.TestAction">
- </bean> -->
- <bean id="login" class="action.loginAction">
- </bean>
- </beans>
struts文件
action.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
- "http://struts.apache.org/dtds/struts-2.1.7.dtd">
- <struts>
- <package name="getIp" extends="json-default" namespace="/getIp">
- <!-- <action name="testJson" class="testAction">
- <result type="json"></result>
- </action>
- <action name="testJsp" class="testAction">
- <result name="success">/index.jsp</result>
- </action> -->
- <action name="login" class="login">
- <result type="json"></result>
- </action>
- </package>
- </struts>
成功传值
方式二 jsp中a标签url传值username,password, action中set方法接收
- <a href="getIp/login?username=123&password=123">点击传值</a>
其它部分与方式一一样
完整jsp页面代码
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme() + "://"
- + request.getServerName() + ":" + request.getServerPort()
- + path + "/";
- %>
- <%@taglib prefix="s" uri="/struts-tags" %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>login page</title>
- </head>
- <body>
- <form action="getIp/login" method="post" name="form1">
- 用户名:
- <s:textfield name="username" />
- <br />
- 密 码:
- <s:password name="password" />
- <br />
- <s:submit value="提交" />
- </form>
- <a href="getIp/login?username=123&password=123">点击传值</a>
- </body>
- </html>
方式三 jsp中js的ajax或者jquery用url传值username,password, action中set方法接收
添加jQuery框架
- <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
- <script>
- $(function() {
- <span style="white-space:pre"> </span>bindLogin();
- });
- function bindLogin() {
- <span style="white-space:pre"> </span>$("#btnSubmit").bind("click",
- <span style="white-space:pre"> </span>function() {<span style="white-space:pre"> </span>
- <span style="white-space:pre"> </span>var txtUserName = $("#username3").val();
- <span style="white-space:pre"> </span>var txtPwd = $("#password3").val();
- <span style="white-space:pre"> </span>if (! (txtUserName && txtPwd)) {
- <span style="white-space:pre"> </span>alert("请输入帐号和密码;");
- <span style="white-space:pre"> </span>return;
- <span style="white-space:pre"> </span>}
- <span style="white-space:pre"> </span>$.getJSON("<%=basePath%>getIp/login?username=" + txtUserName + "&password=" + txtPwd,
- <span style="white-space:pre"> </span>function(data) {<span style="white-space:pre"> </span>
- <span style="white-space:pre"> </span>alert(data);<span style="white-space:pre"> </span>
- <span style="white-space:pre"> </span>if (data.aaa == "fail") {
- <span style="white-space:pre"> </span>alert("很抱歉,用户名不存在或者密码错误。---请确认密码");
- <span style="white-space:pre"> </span>}else {
- <span style="white-space:pre"> </span>window.location.href = "<%=basePath%>index.jsp";
- <span style="white-space:pre"> </span>sessionValuesTemp = data.userId;
- <span style="white-space:pre"> </span>}
- <span style="white-space:pre"> </span>});
- <span style="white-space:pre"> </span>});
- }
- <span style="white-space:pre"> </span></script>
- <div class="login_box_wrapper">
- <span style="white-space:pre"> </span><div class="login_box">
- <span style="white-space:pre"> </span><ul>
- <span style="white-space:pre"> </span><li class="devideLine"><span>用户名</span><input type="text" class="userName" id="username3" /></li>
- <span style="white-space:pre"> </span><li><span>密码</span><input type="password" class="passWord" id="password3" /></li>
- <span style="white-space:pre"> </span></ul>
- <span style="white-space:pre"> </span><button type="button" id="btnSubmit">方式三提交</button>
- <span style="white-space:pre"> </span></div>
- <span style="white-space:pre"> </span></div>
其它部分与方式一一样
完整jsp页面代码
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme() + "://"
- + request.getServerName() + ":" + request.getServerPort()
- + path + "/";
- %>
- <%@taglib prefix="s" uri="/struts-tags" %>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
- <title>login page</title>
- <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
- <script>
- $(function() {
- bindLogin();
- });
- function bindLogin() {
- $("#btnSubmit").bind("click",
- function() {
- var txtUserName = $("#username3").val();
- var txtPwd = $("#password3").val();
- if (! (txtUserName && txtPwd)) {
- alert("请输入帐号和密码;");
- return;
- }
- $.getJSON("<%=basePath%>getIp/login?username=" + txtUserName + "&password=" + txtPwd,
- function(data) {
- alert(data);
- if (data.aaa == "fail") {
- alert("很抱歉,用户名不存在或者密码错误。---请确认密码");
- }else {
- window.location.href = "<%=basePath%>index.jsp";
- sessionValuesTemp = data.userId;
- }
- });
- });
- }
- </script>
- </head>
- <body>
- <form action="getIp/login" method="post" name="form1">
- 用户名:
- <s:textfield name="username" />
- <br />
- 密 码:
- <s:password name="password" />
- <br />
- <s:submit value="提交" />
- </form>
- <a href="getIp/login?username=123&password=123">点击传值</a>
- <div class="login_box_wrapper">
- <div class="login_box">
- <ul>
- <li class="devideLine"><span>用户名</span><input type="text" class="userName" id="username3" /></li>
- <li><span>密码</span><input type="password" class="passWord" id="password3" /></li>
- </ul>
- <button type="button" id="btnSubmit">方式三提交</button>
- </div>
- </div>
- </body>
- </html>
传值为封装类
例如我们把用户名密码封装成用户 User
User.Java
- package entity;
- public class User {
- private String username;
- private String password;
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
方式一
LoginAction.java中- public class loginAction extends ActionSupport{
- private User user;
- public User getUser()
- { return user; }
- public void setUser(User user)
- { this.user=user; } }
- <form action="login" method="post"name="form1">
- 用户名:<s:textfield name="user.username"/><br/>
- 密 码:<s:password name="user.password"/><br/>
- <s:submit value="提交"/>
- </form>
方式二
Action类必须实现ModelDriven接口,同样把表单传来的数据封装起来,Action类中必须实例化该对象,并且要重写getModel()方法
- public class loginAction extends ActionSupport implements ModelDriven<User>{
- private User user =new User();
- public User getModel(){
- return user;
- }
- }
举个例子你就好明白了。
例如,首先,你写了一个ExampleBean里面有属性userName和password都是String类型,然后别忘了写他们的setter和getter方法,public void setUserName(String userName)等等。
然后,写Action,在Action类中加入成员变量private String uName;private String uPwd;
一定要再写上他们的Setter和Getter方法。public void setUName(String s)等等。
然后你在execute方法中创建一个bean对象。如:
ExampleBean b = new ExampleBean(this.getUName(),this.getUPwd());
就可以创建这个bean对象了。
具体传值流程是:首先你访问jsp页面,然后比如jsp页面上有一个登录框,你可以输入用户密码。
<s:form action="你设的Actiong名字">
<s:textfield name="uName" label="用户名"/>
<s:password name="uPwd" label="密码"/>
<s:submit value="Go"/>
</s:form>
这里注意的是标签中name属性对应的就是Action里面的值.name叫uName,提交表单后在Action里就会自动调用setUName("你输入的值");然后就执行execute方法,你就可以创建bean了。
明白过程了吗?如果不会还可以追问。