作为一个新手,刚开始入手项目时,最先遇到的问题便是jsp页面传值给后台java,以及后台java传值到jsp页面。其实方法有很多,但本项目用的是框架,我用的是ajax传值。
Jsp–>后台:将要传递的值放在ajax的data对象中,后台用request.getParameter()取出。
后台–>jsp:将要传递的值作为返回值,前台用data接收。
以下是我的代码:
- Jsp代码:
$.ajax({
type : "post",
url : contextPath +"/Mytestww.action",
data:
{
accout:$("#accout").val(),
password:$("#password").val()
},
dataType : "json",
success : function(data) {
alert(data.check);
},
error : function(data) {
alert("ERROR");
}
);
- 后台action代码:
@Controller
public class myTest{
private String username="";
private String password="";
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
@RequestMapping(value = "Mytestww")
@ResponseBody
public Map<String,String> saveAll(ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception
{
username=request.getParameter("accout");
password=request.getParameter("password");
String check="";
Map<String,String> map = new HashMap<String,String>();
String checkSql="select * from sysuser where name='"+username+"'";
String sql="insert into sysuser(name,password) values('"+username+"','"+password+"')";
String driver="net.sourceforge.jtds.jdbc.Driver";
String url="jdbc:jtds:sqlserver://10.20.90.6:1433/EC_Digest";
try {
Class.forName(driver);
conn=DriverManager.getConnection(url,"sa","root123");
stmt=conn.createStatement();
ResultSet rs = stmt.executeQuery(checkSql);
while(rs.next())
{
check=rs.getString(1);
}
if(check!=null&&check!="")
{
check="用户名已存在";
rs.close();
}
else
{
stmt.executeUpdate(sql);
check="注册成功";
}
}
catch(Exception e){
System.out.println("连接失败");
}
map.put("check", check);
return map;
}
}
该功能是一个查询功能,前台输入一个用户名到数据库查找,显示查找结果。但如果结果有多个,在后台可以将其放入List列表,前台可以用接收,例如:
- jsp
<table id="maintable" border="1" align="center" class="maintable" >
<tr>
<th>编号</th> <th>名称</th> <th>数量</th> <th>折扣</th> <th>类别</th><th colspan="2">操作</th>
</tr>
<c:forEach items="${list}" var="keyword" varStatus="id">
<tr>
<td>${keyword.id}</td>
<td>${keyword.name}</td>
<td>${keyword.number}</td>
<td>${keyword.dist}</td>
<td>${keyword.caegory}</td>
<td><button class="btn btn-default" onclick="delect('${keyword.id}')">删除</button></td>
<td><button class="btn btn-default" onclick="showmodify('${keyword.id}')">修改</button></td>
</tr>
</c:forEach>
</table>
- 后台action
@RequestMapping(value = "Savelist")
public String savelist(ModelMap model,HttpServletRequest request, HttpServletResponse response) throws Exception
{
List<listBeans> list = new ArrayList<listBeans>();
String checkSql="select * from czymanage";
String driver="net.sourceforge.jtds.jdbc.Driver";
String url="jdbc:jtds:sqlserver://10.20.90.6:1433/EC_Digest";
Class.forName(driver);
Connection conn=DriverManager.getConnection(url,"sa","root123");
Statement stmt=conn.createStatement();
ResultSet rs = stmt.executeQuery(checkSql);
while(rs.next())
{
listBeans listb=new listBeans();
listb.setId(rs.getString(1));
listb.setName(rs.getString(2));
listb.setNumber(rs.getString(3));
listb.setDist(rs.getString(4));
listb.setCaegory(rs.getString(5));
list.add(listb);
}
model.put("list", list);
rs.close();
stmt.close();
conn.close();
return "digest/product";
}
该功能是显示数据库的数据并显示在前台的列表中,效果如下:
另外前后台传值方式很多,我就不介绍我未使用的了。