View视图层:注册页面
<form action="regServlet" method="post"> 账号:<input type="text" name="username"/><br/> 密码:<input type="password" name="pwd"/><br/> 确认密码:<input type="password" name="repwd"/><br/> 爱好:<input type="checkbox" name="hobby" value="读书"/>读书 <input type="checkbox" name="hobby" value="旅游"/>旅游 <input type="checkbox" name="hobby" value="逛街"/>逛街 <br/> <input type="submit" value="注册"/>"</form>
显示所有页面的jsp代码
<table border="1" width="100%"> <tr> <td>账户</td><td>密码</td><td>爱好</td><td colspan="3">操作</td> </tr><c:forEach items="${list}" var="m"> <tr> <td>${m["USERNAME"] }</td> <td>${m["PWD"] }</td> <td>${m["AIHAO"] }</td> <td><a href='zhuce.jsp'>增加</a></td> <td><a href='delServlet?username=${m["USERNAME"] }'>删除</a></td> <td><a href='javascript:alert("a")'>删除</a></td> </tr></c:forEach></table>
web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><welcome-file-list><welcome-file>zhuce.jsp</welcome-file></welcome-file-list><!-- 配置servlet --><servlet> <servlet-name>regServlet</servlet-name> <servlet-class>com.controller.RegServlet</servlet-class></servlet><servlet><servlet-name>allServlet</servlet-name><servlet-class>com.controller.AllServlet</servlet-class></servlet><servlet><servlet-name>DelServlet</servlet-name><servlet-class>com.controller.DelServlet</servlet-class></servlet><servlet-mapping> <servlet-name>regServlet</servlet-name> <url-pattern>/regServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>allServlet</servlet-name><url-pattern>/allServlet</url-pattern></servlet-mapping><servlet-mapping><servlet-name>DelServlet</servlet-name><url-pattern>/delServlet</url-pattern></servlet-mapping></web-app>
mybatis的配置文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="username" value="scott"/> <property name="password" value="tiger"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/mapper/UserinfoMapper.xml"/> </mappers></configuration>
返回SqlSession对象的公共类
package com.util;import java.io.IOException;import java.io.Reader;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;//公共类,读取config.xml文件,用来和数据库建立联系//The AdapterNet wrong:修改config.xml为ip地址public class SSFU { public static SqlSession getSqlSession(){ Reader reader=null; SqlSessionFactory factory=null; SqlSession session=null; try { reader = Resources.getResourceAsReader("config.xml"); factory=new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); }finally{ try { if(reader!=null){reader.close();} } catch (IOException e) { e.printStackTrace(); } } return factory.openSession(); }}
model层
实体类:
package com.model;//用户信息实体类public class Userinfo { private String username; private String pwd; private String aihao; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } public String getAihao() { return aihao; } public void setAihao(String aihao) { this.aihao = aihao; } }
接口业务定义:
package com.biz;import java.util.List;import java.util.Map;import com.model.Userinfo;//接口,定义了4个抽象方法,增删改查,对userinfo表public interface UserinfoMapper { public int insertUserinfo(Userinfo u); public int updateUserinfo(Userinfo u); public int deleteUserinfo(Userinfo u); public List<Map>selectAll();//无参数;}
接口对应的映射文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--这个映射文件,相当于接口的实现类,4个方法,现在4个实现. --><mapper namespace="com.biz.UserinfoMapper"> <insert id="insertUserinfo" parameterType="com.model.Userinfo"> insert into userinfo values(#{username},#{pwd},#{aihao}) </insert> <update id="updateUserinfo" parameterType="com.model.Userinfo"> update userinfo set pwd=#{pwd} where username=#{username} </update> <delete id="deleteUserinfo" parameterType="com.model.Userinfo"> delete from userinfo where username=#{username} </delete> <select id="selectAll" resultType="java.util.Map"> select * from userinfo </select></mapper>
控制层,控制器
注册Servlet
package com.controller;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.ibatis.session.SqlSession;import com.biz.UserinfoMapper;import com.model.Userinfo;import com.util.SSFU;//作用是一个控制器,一手托view,一手托modelpublic class RegServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //0.解决乱码 req.setCharacterEncoding("utf-8"); //1.接受从zhuce页面传过来的数据; String username=req.getParameter("username");//名字不一样,会报NUllpointerException String pwd=req.getParameter("pwd"); String[]hobbys=req.getParameterValues("hobby"); //1.2将爱好数组转化为字符串 ; String aihao=""; for(int i=0;i<hobbys.length;i++){ aihao+=hobbys[i]+","; } aihao=aihao.substring(0,aihao.length()-1);//截取最后的一个"," //********************************* //操作model对象;新增对象; Userinfo u=new Userinfo(); u.setUsername(username); u.setPwd(pwd); u.setAihao(aihao); //真正的存放到数据库,利用mybatis SqlSession session =SSFU.getSqlSession(); UserinfoMapper um = session.getMapper(UserinfoMapper.class); um.insertUserinfo(u); session.commit(); session.close(); //将数据放到session,然后重定向;这个是假的增加数据; HttpSession hsession=req.getSession(); hsession.setAttribute("u",u);//设置session的属性,存放刚才的对象; resp.sendRedirect("chenggong.jsp"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
查找所有Servlet
package com.controller;import java.io.IOException;import java.util.List;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import org.apache.ibatis.session.SqlSession;import com.biz.UserinfoMapper;import com.util.SSFU;//查询所有用户信息的控制器;public class AllServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //从数据库查询所有信息; SqlSession session =SSFU.getSqlSession(); UserinfoMapper um = session.getMapper(UserinfoMapper.class); List<Map>list=um.selectAll(); System.out.println(list.size()); for(Map map:list){ System.out.println("姓名:"+map.get("USERNAME")+",密码:"+map.get("PWD")+",爱好:"+map.get("AIHAO")); } session.commit(); session.close(); HttpSession hsession=req.getSession(); hsession.setAttribute("list", list); resp.sendRedirect("showAll.jsp"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); }}
读者可以在此基础上,完善下修改 和删除操作,如果修改和删除,是汉字的话,可能会有get传值乱码问题,可以到tomcat的conf目录下,修改server.xml,在connector标签下,增加URIEncoding="utf-8"即可。