JSP与数据库的增删改查

  • Post author:
  • Post category:其他




1.准备工作,首先要有一个数据库,在数据库里新建一个表,用来操作id要设置为自动增长列,否则在插入操作无法成功






在MyEclipse中新建一个Web Progect工程



在src目录下建立entity包,dao包



在WebRoot/WebInfo/lib/导入sqljdbc.jar包(用于对数据库进行操作)







2.entity包,用于操作数据库  (这部分用到的成员变量最好直接通过数据库来直接复制,以免存在漏泄,写错单词等低级错误,其他的就是简单的get和set方法了)




package entity;

public class UserInfo {
	private int id;
	private String user_name;
	private String user_sex;
	private int user_age;
	private String user_hobby;
	private String user_city;
	private String mtext;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUser_name() {
		return user_name;
	}
	public void setUser_name(String user_name) {
		this.user_name = user_name;
	}
	public String getUser_sex() {
		return user_sex;
	}
	public void setUser_sex(String user_sex) {
		this.user_sex = user_sex;
	}
	public int getUser_age() {
		return user_age;
	}
	public void setUser_age(int user_age) {
		this.user_age = user_age;
	}
	public String getUser_hobby() {
		return user_hobby;
	}
	public void setUser_hobby(String user_hobby) {
		this.user_hobby = user_hobby;
	}
	public String getUser_city() {
		return user_city;
	}
	public void setUser_city(String user_city) {
		this.user_city = user_city;
	}
	public String getMtext() {
		return mtext;
	}
	public void setMtext(String mtext) {
		this.mtext = mtext;
	}
}



Dao包下用于对数据库的操作数据库


(1)


BaseDao.java链接数据库(其中的close方法中依次关闭了结果集,操作句柄,链接)





package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class BaseDao {
	public static Connection getConnection()throws Exception{
		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
		String url="jdbc:sqlserver://127.0.0.1:1433;database=mydb";
		return DriverManager.getConnection(url, "sa", "sa");
	}
	
	public static void close(ResultSet rs,Statement sta,Connection con)throws Exception{
		if(rs!=null){
                 //关闭结果集
                rs.close();
		}
		if(sta!=null){
                 //关闭操作句柄
                 sta.close();
		}
		if(con!=null){
                //关闭链接
                con.close();
		}
	}
}

UserinfoDao.java


是数据库的增删改查的方法

package dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import entity.UserInfo;

public class UserInfoDao {

	//查询所有(查)
	public ArrayList findAll(){
		Connection con=null;
		PreparedStatement psta=null;
		ResultSet rs=null;
		ArrayList list=new ArrayList();
		String sql="select * from userinfo";
		try{
			con=BaseDao.getConnection();
			psta=con.prepareStatement(sql);
			rs=psta.executeQuery();
			while(rs.next()){
				UserInfo obj=new UserInfo();
				obj.setId(rs.getInt(1));
				obj.setUser_name(rs.getString(2));
				obj.setUser_sex(rs.getString(3));
				obj.setUser_age(rs.getInt(4));
				obj.setUser_hobby(rs.getString(5));
				obj.setUser_city(rs.getString(6));
				obj.setMtext(rs.getString(7));
				list.add(obj);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				BaseDao.close(rs, psta, con);
			}catch(Exception e){
				e.printStackTrace();
			}
			return list;
		}
	}
	
	//插入方法(增)
	public boolean save(UserInfo obj){
		Connection con=null;
		PreparedStatement psta=null;
		String sql="insert into userinfo values(?,?,?,?,?,?)";
		boolean flag=false;
		try{
			con=BaseDao.getConnection();
			psta=con.prepareStatement(sql);
			psta.setString(1, obj.getUser_name());
			psta.setString(2, obj.getUser_sex());
			psta.setString(3, obj.getUser_age()+"");
			psta.setString(4, obj.getUser_hobby());
			psta.setString(5, obj.getUser_city());
			psta.setString(6, obj.getMtext());
			flag=psta.executeUpdate()>0;
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				BaseDao.close(null, psta, con);
			}catch(Exception e){
				e.printStackTrace();
			}
			return flag;
		}
	}
	
	//删除方法(删)
	public boolean remove(int id){
		Connection con=null;
		PreparedStatement psta=null;
		boolean flag=false;
		String sql="delete from userinfo where id=?";
		try{
			con=BaseDao.getConnection();
			psta=con.prepareStatement(sql);
			psta.setInt(1, id);
			flag=psta.executeUpdate()>0;
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				BaseDao.close(null, psta, con);
			}catch(Exception e){
				e.printStackTrace();
			}
			return flag;
		}
	}
	//通过id修改,为更新做准备的(改)
			public UserInfo findById(int id){
				Connection con=null;
				PreparedStatement psta=null;
				ResultSet rs=null;
				UserInfo obj=null;
				String sql="select * from userinfo where id=?";
				try{
					con=BaseDao.getConnection();
					psta=con.prepareStatement(sql);
					psta.setInt(1, id);
					rs=psta.executeQuery();
					if(rs.next()){
						obj=new UserInfo();
						obj.setId(rs.getInt(1));
						obj.setUser_name(rs.getString(2));
						obj.setUser_sex(rs.getString(3));
						obj.setUser_age(rs.getInt(4));
						obj.setUser_hobby(rs.getString(5));
						obj.setUser_city(rs.getString(6));
						obj.setMtext(rs.getString(7));
					}
				}catch(Exception e){
					e.printStackTrace();
				}finally{
					try{
						BaseDao.close(rs, psta, con);
					}catch(Exception e){
						e.printStackTrace();
					}
					return obj;
				}
			}
	
	//更新方法(修改数据)(改)
	public boolean update(UserInfo obj){
		Connection con=null;
		PreparedStatement psta=null;
		String sql="update userinfo set user_name=?,user_sex=?,user_age=?,user_hobby=?,user_city=?,mtext=? where id=?";
		boolean flag=false;
		try{
			con=BaseDao.getConnection();
			psta=con.prepareStatement(sql);
			psta.setString(1, obj.getUser_name());
			psta.setString(2, obj.getUser_sex());
			psta.setString(3, obj.getUser_age()+"");
			psta.setString(4, obj.getUser_hobby());
			psta.setString(5, obj.getUser_city());
			psta.setString(6, obj.getMtext());
			psta.setInt(7,obj.getId());
			flag=psta.executeUpdate()>0;
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			try{
				BaseDao.close(null, psta, con);
			}catch(Exception e){
				e.printStackTrace();
			}
			return flag;
		}
	}
	
	
}



3.界面演示





查找界面


在WebRoot/WEB-INF下的index.jsp下设计要演示的界面



这里为了方便操作还增加了一些删除和修改的跳转链接(这部分是为了方便后续的删除和修改操作)



<pre name="code" class="javascript"><%@ page import="java.util.*,dao.*,entity.*" pageEncoding="UTF-8"%>
<html>
  <head>  
    <title></title>
  </head>
  <%
  	UserInfoDao dao=new UserInfoDao();
  	ArrayList list=dao.findAll();
   %>
   
   <script type="text/javascript">
   	function myAction(pid){
   		document.forms[0].id.value=pid;
   		document.forms[0].submit();
   	}
   </script>
  <body>
	<h1 align="center"><br></h1><h1 align="center">    用户信息</h1>
	<form action="doRemove.jsp" method="post">
		<!-- 用于存放选择的id,然后会随表单提交给服务器处理页面 -->
		<input type="hidden" name="id">
		<table align="center" border="1" width="80%">
			<tr>
				<td colspan="8" align="right">
					<a href="add.jsp">添加新信息</a>
				</td>
			</tr>
			<tr>
				<th>编号</th>
				<th>姓名</th>
				<th>性别</th>
				<th>年龄</th>
				<th>爱好</th>
				<th>城市</th>
				<th>描述</th>
				<th>操作</th>
			</tr>
			<%for(int i=0;i<list.size();i++){
				UserInfo obj=(UserInfo)list.get(i);%>
				<!--Html代码-->
				<tr>
					<td><%=obj.getId()%></td>
					<td><%=obj.getUser_name()%></td>
					<td><%=obj.getUser_sex()%></td>
					<td><%=obj.getUser_age()%></td>
					<td><%=obj.getUser_hobby()%></td>
					<td><%=obj.getUser_city()%></td>
					<td><%=obj.getMtext()%></td>
					<td>
						<%-- <a href="doRemove.jsp?id=<%=obj.getId()%>">删除</a> --%>、
						<a href="update.jsp?id=<%=obj.getId()%>">修改</a> 
						<input type="button" value="删除" οnclick="myAction('<%=obj.getId()%>')"/>
					</td>
				</tr>
			<%}%>
		</table>
	</form>
  </body>
<html>



对于JSP    onclick的方法中提交时可以用document.forms[0].name.value    (name为表单的名字,这个表单中为id)




或者 document.表单名.控件名.value   提交的必须是<input/>中的




打开数据库,开启服务器后,在浏览器中键入地址后的界面如下




这样查询的操作就完成了



4.下面进行添加数据的操作


设计add.jsp提供数据添加的界面


<%@ page import="java.util.*" pageEncoding="UTF-8"%>

<html>
  <head>
    <title></title>
  </head>
  <!-- JavaScript是搭配HTML使用的脚本代码,可以帮助我们操作HTML内容和浏览器本身 -->
  <!-- JavaScript可以做很多很多事情,甚至可以用来编写游戏和强大的基于浏览器的应用
  然而更普遍的功能是利用JavaScript帮助我们进行表单验证,确保提交的数据是符合服务器业务处理要求的 -->
  <script type="text/javascript">
  	function myBack(){
  		//将浏览器导航为index.jsp,location.href属性可以更改当前浏览器地址栏的内容
  		location.href="index.jsp";
 		//window.location.href="index.jsp";
 
  	}
  	//mySubmit方法用于提交表单,并且在提交之前验证表单数据的格式是否符合要求
  	function mySubmit(){
  		//先来个简单的,验证姓名必须有填写,不能为空
  		//首先获取姓名输入框的数据
  		//document是文档对象,代表整个HTML页面
  		//forms是表单集合,如果存在多个表单的话,索引从0开始,并且是从上往下编号   如果表单有表单名可以用<span style="font-family:FangSong_GB2312;"><strong>document.表单名.控件名.value </strong></span>
  		//user_name是表单下控件的名字
  		//value是获取这个控件的value值
  		//length是一个属性,返回长度
  		//var是变量,JavaScript是弱类型语言,也就是说不区分int,double,Object这些类型
  		//而是统一使用var表示
  		var name=document.forms[0].user_name;
               //通过document.getElementById(“id名”) 可以获取非<input /> 中的内容,但是dojsp无法获取         
                var name_msg=document.getElementById("name_msg");
  		var hobby_msg=document.getElementById("hobby_msg");
  		name_msg.innerHTML="";
  		hobby_msg.innerHTML="";
  		if(name.value.length==0){
  			//提示用户
  			//alert("姓名为必填项");
  			name_msg.innerHTML="<font color='red'>*姓名为必填项</font>";
  			//聚焦(鼠标定位)
                        name.focus();
  			return ;//中断方法的运行
  		}
  		//对于多选的控件判断会稍微麻烦点点哦
  		var hobby_item=document.forms[0].user_hobby;
  		var flag=false;
  		for(var i=0;i<hobby_item.length;i++){
  			if(hobby_item[i].checked==true){
  				flag=true;
  				break;
  			}
  		}
  		if(flag==false){
  			//alert("至少选择一个爱好");
  			hobby_msg.innerHTML="<font color='red'>*至少选择一个爱好</font>";
  			return ;
  		}
  		document.forms[0].submit();//submit是提交方法
  	}
  </script>
  <body>
	<h1 align="center">新增信息</h1>
	<form action="doadd.jsp" method="post" >
		<table align="center" width="50%">
			<!-- 姓名 -->
			<tr>
				<td align="right" width="37%">姓名:</td>
				<td align="left" width="25%"><input type="text" name="user_name" ></td> 
				<td>
					<div id="name_msg" align="left"></div>
				</td>
			</tr>
			<!-- 性别 -->
			<tr>
				<td align="right">性别:</td>
				<td align="left" colspan="2"><input type="radio" name="user_sex" value="男" checked="checked">男
				<input type="radio" name="user_sex" value="女" />女</td> 
			</tr>
			<!-- 年龄 -->
			<tr>
				<td align="right">年龄:</td>
				<td align="left" colspan="2"><select name="user_age">
				<% for(int i=18;i<=30;i++){%>
					<option value="<%=i%>" ><%=i%></option>
				<%} %>
				</select></td> 
			</tr>
			<!-- 爱好 -->
			<tr>
				<td align="right">爱好:</td>
				<td align="left"><input  type="checkbox" name="user_hobby" value="唱歌"/>唱歌
				<input type="checkbox" name="user_hobby" value="跳舞"/>跳舞
				<input type="checkbox" name="user_hobby" value="阅读"/>阅读 </td> 
				<td>
					<div id="hobby_msg"></div>
				</td>
			</tr>
			<!-- 城市 -->
			<tr>
				<td align="right" valign="middle">城市:</td>
				<td align="left" colspan="2"><select name="user_city" multiple="multiple" size="9	">
					<option value="北京">北京        </option>
					<option value="南京">南京        </option>
					<option value="成都">成都        </option>
					<option value="杭州">杭州        </option>
					<option value="深圳">深圳        </option>
					<option value="西安">西安        </option>
					<option value="长沙">长沙        </option>
					<option value="武汉">武汉        </option>
					<option value="上海">上海        </option>
				</select></td> 
			</tr>
			<!-- 描述 -->
			<tr>
				<td align="right" valign="middle">描述:</td>
				<td align="left" colspan="2"><textarea rows="8" name="mtext"></textarea></td>
			</tr>
			<!-- 按钮 -->
			<tr>
				<td align="center" colspan="3">
					<input type="button" value="添加" οnclick="mySubmit()">
					    
					<input type="button" value="返回"  οnclick="myBack()">
				</td>
			</tr>
		</table>
	</form>
  </body>
</html>


这个界面要将新添加的信息发送给doadd.jsp页面,因此表单中要有post方式


界面如下







doadd.jsp 是处理操作的页面,并非用于显示数据,所以无需任何HTML代码,只是将上一个add.jsp传递过来的数据进行处理,不用于在浏览器上显示出来




<%@ page import="java.util.*,entity.*,dao.*" pageEncoding="UTF-8"%>
<!-- 处理操作的页面,并非用于显示数据,所以无需任何HTML代码 -->
<%
	//接收数据,在JSP中每个页面都具备一个隐藏的对象,这个对象包含着所有提交的请求信息
	//这就是request对象,也成为请求对象
	//request是一个隐式对象,所谓的隐式对象是无需声明直接使用的对象(事实上声明是存在的,不过不由我们来做)
	//getParameter是request中最常见的方法,作用是根据传入的name获取value
	//setCharacterEncoding是设置请求对象中参数的编码,必须在调用getParameter之前调用该方法
	//并且一般来说这里的编码要和提交页面的编码一致
	request.setCharacterEncoding("UTF-8");
	String user_name=request.getParameter("user_name");
	String user_sex=request.getParameter("user_sex");
	String user_age=request.getParameter("user_age");
	//getParameterValues可以获取name对应的一组value(如果name下有多个value被提交的话)
	String[] s1=request.getParameterValues("user_hobby");
	StringBuffer user_hobby=new StringBuffer();
	for(int i=0;s1!=null&&i<s1.length;i++){
      user_hobby.append(s1[i]);
      if(i<s1.length-1){
       user_hobby.append(",");
      }
	}
	String[] s2=request.getParameterValues("user_city");
	StringBuffer user_city=new StringBuffer();
	for(int i=0;s2!=null&&i<s2.length;i++){
		user_city.append(s2[i]);
		if(i<s2.length-1){
			user_city.append(",");
		}
	}
	String mtext=request.getParameter("mtext");
	UserInfo obj=new UserInfo();
	obj.setUser_name(user_name);
	obj.setUser_sex(user_sex);
	obj.setUser_age(Integer.parseInt(user_age));
	obj.setUser_hobby(user_hobby.toString());
	obj.setUser_city(user_city.toString());
	obj.setMtext(mtext);
	
	UserInfoDao dao=new UserInfoDao();
	dao.save(obj);
	
	//除了request外,还有个隐藏的对象叫response
	//response也是隐式对象,无需声明就可以直接使用
	//和request不同的地方在于,它是表示响应
	//现在我们要做的时候结束完所有工作后,页面重新为index.jsp
	//所以需要通过响应对象将index.jsp页面响应回客户浏览器,否则客户浏览器得到的是doadd.jsp的页面代码
	//换句话说就是空无一物
	response.sendRedirect("index.jsp");
%>

接下来进行删除操作


doRemove.jsp


<%@ page import="java.util.*,dao.*" pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	UserInfoDao dao=new UserInfoDao();
	int id=Integer.parseInt(request.getParameter("id"));
	String msg="操作出问题了,请稍后重试,或联系管理员";
	if(dao.remove(id)){
		msg="恭喜你,操作成功,成功删除id为"+id+"的数据";
	}
	//response.sendRedirect是重定向
	//重定向会让我们的浏览器显示指定的页面,但是对于用户来说无法得知操作是否成功(只能通过查看显示的页面效果来判断)
	//除了重定向以外还有3种提示效果
	/
	//1.弹出对话框,等待用户确认消息后再继续前往下一个页面
	//2.显示信息,在一段时间后自动前往下一个页面
	//response.sendRedirect("index.jsp");
 %>
 <%--
<script type="text/javascript">
	alert("<%=msg%>");
	location.href="index.jsp";
</script>
 --%>
<%--
JSP是一个多种代码混杂的编写环境,其中包括的代码可以分为服务器端代码和客户端代码
所谓的服务器端代码是指运行在服务器环境中,由服务器负责解析和执行的代码,在JSP中Java代码就是服务器端代码
而其他的HTML,JS,CSS等代码都是客户端代码,是由浏览器来解析和执行
从请求响应模式的流程来说,是先执行服务器代码,然后执行客户端代码
在这个执行过程中不会去考虑混杂在一起后的先后顺序问题
简单的说,就是执行Java代码的时候,HTML,JS等代码是完全忽略的
而执行HTML,JS等代码的时候,Java代码早已执行完毕,所有Java代码的地方已经变成运行后的结果
 --%>
<%//response.sendRedirect("index.jsp"); %>
<!-- 2.显示信息,在一段时间后自动前往下一个页面 -->
<%-- 
<html>
	<head>
		<meta http-equiv="refresh" content="5;index.jsp">
	</head>
</html>
<h1><%=msg%>,5秒后返回首页,如浏览器无反应,<a href="index.jsp">请点击</a></h1>
--%>
<div id="msg"><h1><%=msg%>,5秒后返回首页,如浏览器无反应,<a href="index.jsp">请点击</a></h1></div>
<script type="text/javascript">
	var count=4;
	window.setInterval(function(){
		if(count==0){
			location.href="index.jsp";
		}
		var div_msg=document.getElementById("msg");
		div_msg.innerHTML="<h1><%=msg%>,"+count+"秒后返回首页,如浏览器无反应,<a href='index.jsp'>请点击</a></h1>"
		count--;
	}, 1000);
</script>


修改操作update.jsp


<%@ page import="java.util.*,dao.*,entity.*" pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	int id=Integer.parseInt(request.getParameter("id"));
	UserInfoDao dao=new UserInfoDao();
	UserInfo obj=dao.findById(id);
	
	//准备好常量
	ArrayList sexs=new ArrayList();
	sexs.add("男");
	sexs.add("女");
	ArrayList hobbys=new ArrayList();
	hobbys.add("唱歌");
	hobbys.add("跳舞");
	hobbys.add("阅读");
	ArrayList citys=new ArrayList();
	citys.add("北京");
	citys.add("南京");
	citys.add("成都");
	citys.add("杭州");
	citys.add("深圳");
	citys.add("西安");
	citys.add("长沙");
	citys.add("武汉");
	citys.add("上海");
 %>
<html>
  <head>
    <title></title>
  </head>
  <script type="text/javascript">
  	function myBack(){
  		location.href="index.jsp";
  	}
  
  	function mySubmit(){
  		var name=document.forms[0].user_name;
  		var name_msg=document.getElementById("name_msg");
  		var hobby_msg=document.getElementById("hobby_msg");
  		name_msg.innerHTML="";
  		hobby_msg.innerHTML="";
  		if(name.value.length==0){
  			name_msg.innerHTML="<font color='red'>*姓名为必填项</font>";
  			name.focus();
  			return ;
  		}
  		var hobby_item=document.forms[0].user_hobby;
  		var flag=false;
  		for(var i=0;i<hobby_item.length;i++){
  			if(hobby_item[i].checked==true){
  				flag=true;
  				break;
  			}
  		}
  		if(flag==false){
  			hobby_msg.innerHTML="<font color='red'>*至少选择一个爱好</font>";
  			return ;
  		}
  		document.forms[0].submit();
  	}
  </script>
  <body>
	<h1 align="center">修改信息</h1>
	<form action="doUpdate.jsp" method="post" >
		<input type="hidden" name="id" value="<%=obj.getId()%>">
		<table align="center" width="50%">
			<!-- 姓名 -->
			<tr>
				<td align="right" width="37%">姓名:</td>
				<td align="left" width="25%"><input type="text" name="user_name" value="<%=obj.getUser_name()%>" ></td> 
				<td>
					<div id="name_msg" align="left"></div>
				</td>
			</tr>
			<!-- 性别 -->
			<tr>
				<td align="right">性别:</td>
				<td align="left" colspan="2">
					<%for(int i=0;i<sexs.size();i++){%>
						<input type="radio" name="user_sex" value="<%=sexs.get(i).toString()%>"
						<%if(obj.getUser_sex().equalsIgnoreCase(sexs.get(i).toString())){%>
						checked="checked"
						<% } %>
						/><%=sexs.get(i).toString()%>
					<% } %>
				</td> 
			</tr>
			<!-- 年龄 -->
			<tr>
				<td align="right">年龄:</td>
				<td align="left" colspan="2"><select name="user_age">
				<% for(int i=18;i<=30;i++){%>
					<option value="<%=i%>" <%if(obj.getUser_age()==i){out.print("selected='selected'");} %>><%=i%></option>
				<%} %>
				</select></td> 
			</tr>
			<!-- 爱好 -->
			<tr>
				<td align="right">爱好:</td>
				<td align="left">
				<%for(int i=0;i<hobbys.size();i++){%>
					<input  type="checkbox" name="user_hobby" value="<%=hobbys.get(i).toString()%>"<%if(obj.getUser_hobby().indexOf(hobbys.get(i).toString())!=-1){%>checked="checked"<%}%>/><%=hobbys.get(i).toString()%><% } %>
			 </td> 
				<td>
					<div id="hobby_msg"></div>
				</td>
			</tr>
			<!-- 城市 -->
			<tr>
				<td align="right" valign="middle">城市:</td>
				<td align="left" colspan="2"><select name="user_city" multiple="multiple" size="9	">
					<%for(int i=0;i<citys.size();i++){%>
						<option value="<%=citys.get(i).toString()%>"  <%if(obj.getUser_city().indexOf(citys.get(i).toString())!=-1){%>selected="selected"<%} %>><%=citys.get(i).toString()%>        </option>
					<%} %>
				</select></td> 
			</tr>
			<!-- 描述 -->
			<tr>
				<td align="right" valign="middle">描述:</td>
				<td align="left" colspan="2"><textarea rows="8" name="mtext"><%=obj.getMtext()%></textarea></td>
			</tr>
			<!-- 按钮 -->
			<tr>
				<td align="center" colspan="3">
					<input type="button" value="修改" οnclick="mySubmit()">
					    
					<input type="button" value="返回"  οnclick="myBack()">
				</td>
			</tr>
		</table>
	</form>
  </body>
</html>

doUpdate.jsp

<%@ page import="java.util.*,dao.*,entity.*" pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");
	String user_name=request.getParameter("user_name");
	String user_sex=request.getParameter("user_sex");
	String user_age=request.getParameter("user_age");
	//如果多选控件没有选定值的话,返回是null而非长度为0的数组
	String[] hobbys=request.getParameterValues("user_hobby");
	StringBuffer user_hobby=new StringBuffer();
	for(int i=0;hobbys!=null&&i<hobbys.length;i++){
		user_hobby.append(hobbys[i]);
		if(i<hobbys.length-1){
			user_hobby.append(",");
		}
	}
	String[] citys=request.getParameterValues("user_city");
	StringBuffer user_city=new StringBuffer();
	for(int i=0;citys!=null&&i<citys.length;i++){
		user_city.append(citys[i]);
		if(i<citys.length-1){
			user_city.append(",");
		}
	}
	String mtext=request.getParameter("mtext");
	int id=Integer.parseInt(request.getParameter("id"));
	
	
	UserInfo obj=new UserInfo();
	obj.setId(id);
	obj.setUser_name(user_name);
	obj.setUser_sex(user_sex);
	obj.setUser_age(Integer.parseInt(user_age));
	obj.setUser_hobby(user_hobby.toString());
	obj.setUser_city(user_city.toString());
	obj.setMtext(mtext);
	UserInfoDao dao=new UserInfoDao();
	dao.update(obj);
	response.sendRedirect("index.jsp");
	
%>







版权声明:本文为xubeiqiannian原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。