南昌航空大学实验报告2-JavaBean和Servlet完成增删改查
Servlet和JavaBean开发实验报告

一、实验目的1.掌握jsp的javabean相关知识2.能熟练使用javabean编写程序实现对数据库的访问(增、删、改、查操作)二、主要仪器设备微型计算机、Windows操作系统,MyEclipse软件。
三、实验原理与方法运行一个Servlet时,首先要将编写好的.java文件打包成一个.class文件,然后将打包好的文件添加到Tomcat容器中,启动容器,通过已经设置好的地址就可以访问对应的Servlet。
而且可以运用转发和重定向的方法来向服务器发送请求。
四、实验主要内容1.新建一个login.html文件,实现登录的页面。
2.打开数据库,在数据库里面新建一个登录信息表,然后再新建一个login.html文件,通过连接数据库获取表中的信息,来登录tedu系统。
五、实验主要步骤与实验结果1、实验主要操作过程登录界面主要步骤如下:(1)打开MyEclipse软件,新建一个web project,命名为“MyWeb_04”,在“sr c”下新建包“web”,并且在里面新建HelloServlet.java、LoginWeb.java、User.java 三个文件。
(2)在LoginWeb.java文件中编写代码,实现对用户输入数据的判断,如果用户名和密码都匹配的话,就调用success.html文件,输出“欢迎小主回来”,否则,就调用error.html文件,输出“小主的网页走丢了”。
(3)在WebRoot的WEB_INF目录下添加web.xml文件,并配置访问路径。
(4)在WebRoot的根目录下新建error.html、success.html、login.html、userlist.jsp等文件,实现网页的登陆。
(5)打开浏览器,在地址栏中输入地址:localhost:8080/WebRoot/login.html,即可实现登录页面。
Tedu系统的登陆:(1)将项目名为oa_01的web project中的部分文件导入到MyEclipse中,打开数据库软件的命令窗口,在里面输入以下命令:create database tedu;use tedu;create table user(id int primary key auto_increment,uname varchar(40),password varchar(20),age int(11),sex varchar(15),salary int);insert into user values(null,'jack','1234',16,'man',1000);(2)在数据库创建成功后,在“sr c”下新建包“web”,并且在里面新建DBUtis.java、LoginWeb.java、User.java三个文件。
JDBC+Servlet+JSP的学生案例增删改查

JDBC+Servlet+JSP的学⽣案例增删改查数据库信息传输到页⾯实现。
先进⾏学⽣信息页⾯展⽰:接⼝IStudentDaopublic interface IStudentDao {/*** 保存操作* @param stu 学⽣对象,封装了需要保存的对象*/void save(Student stu);/*** 删除操作* @param id 被删除学⽣的主键操作*/void delete(Long id);/**** @param id 被更改学⽣的主键值* @param newStu 学⽣新的信息*/void update(Student newStu);/*** 查询指定id的学⽣对象* @param id 被查询学⽣的主键值* @return如果id存在,返回学⽣对象,否则为null*/Student get(Long id);/*** 查询并返回所有学⽣对象* @return如果结果集为空,返回⼀个空的list对象*/List<Student> listall();}IStudentDaoImplpublic class IStudentDaoImpl implements IStudentDao{public void save(Student stu) {String sql ="insert into t_student (name,age) values (?,?)";PreparedStatement ps = null;//贾琏Connection conn = null;try {conn = JDBCUtil.getConn();ps = conn.prepareStatement(sql);//欲ps.setString(1, stu.getName());ps.setInt(2, stu.getAge());ps.executeUpdate();//执⾏} catch (SQLException e) {e.printStackTrace();}JDBCUtil.close(conn, ps, null);//事务}@Overridepublic void delete(Long id) {String sql ="delete from t_student where id = ?";PreparedStatement ps =null;//贾琏Connection conn = null;try {conn = JDBCUtil.getConn();ps =conn.prepareStatement(sql);ps.setLong(1, id);ps.executeUpdate();}JDBCUtil.close(conn, ps, null);}//update t_student set name='xx',age=17 where id=12@Overridepublic void update(Student stu) {String sql="update t_student set name =? ,age=? where id=?"; PreparedStatement ps =null;//贾琏Connection conn =null;try {conn = JDBCUtil.getConn();ps=conn.prepareStatement(sql);ps.setString(1, stu.getName());ps.setInt(2, stu.getAge());ps.setLong(3, stu.getId());ps.executeUpdate();} catch (Exception e) {e.printStackTrace();}JDBCUtil.close(conn, ps, null);}public Student get(Long id) {String sql ="select * from t_student where id=?";PreparedStatement ps =null;//贾琏Connection conn =null;ResultSet rs = null;try {conn = JDBCUtil.getConn();ps = conn.prepareStatement(sql);ps.setLong(1, id);rs= ps.executeQuery();if (rs.next()) {Student stu = new Student();stu.setId(rs.getLong("id"));stu.setName(rs.getString("name"));stu.setAge(rs.getInt("age"));return stu;}} catch (Exception e) {e.printStackTrace();}JDBCUtil.close(conn, ps, rs);return null;}@Overridepublic List<Student> listall() {List<Student> list = new ArrayList<>();String sql ="select * from t_student";PreparedStatement ps = null;Connection conn = null;ResultSet rs =null;try {conn = JDBCUtil.getConn();ps = conn.prepareStatement(sql);rs = ps.executeQuery();while(rs.next()){Student stu = new Student();stu.setId(rs.getLong("id"));stu.setName(rs.getString("name"));stu.setAge(rs.getInt("age"));list.add(stu);}}finally {JDBCUtil.close(conn, ps, rs);}return list;}domain类public class Student {private Long id;private String name;private Integer age;public Student(){}public Student(String name,Integer age){this.age=age;=name;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";}}设计个util类,⽅便维护public class JDBCUtil {private static DataSource ds =null;static{//当JDBCUtil执⾏后,直接加载⾄JVM就⽴即执⾏try {Properties p = new Properties();p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties")); ds = DruidDataSourceFactory.createDataSource(p);} catch (Exception e) {e.printStackTrace();}}public static Connection getConn(){try {return ds.getConnection();} catch (SQLException e) {e.printStackTrace();}return null;}public static void close(Connection conn,Statement st,ResultSet rs){try {if (rs!=null) {rs.close();}} catch (Exception e) {}finally {try {if (st!=null) {st.close();}} catch (Exception e) {e.printStackTrace();}finally {try {if (conn!=null) {conn.close();}} catch (Exception e) {e.printStackTrace();}}}}}在⽹页展⽰全部信息,将数据⽤student传输过去,在前台获取。
实验报告JSP(完成增删改查)

南通大学信息科学技术学院2020-2021学年第二学期《Java Web开发技术》实验报告实验名称:实验八用model2模式操作userinfo表班级:物联网192 姓名:谢焘学号: 1930110689实验日期: 2021 年 6 月 16 日1、实验目的与要求:1)理解Jsp servlet 和Jsp JavaBean的工作原理,掌握使用Jsp servlet 和Jsp JavaBean的基本方法。
2)设计一组Servlet,分别对增删改啥四种请求与数据进行转发,由JavaBean操作数据库,对数据库施行增删改查操作。
2、实验原理或程序设计思路:1) JDBC(Java DataBase Connectivity)就是Java数据库连接,其实就是用J ava语言来操作数据库。
原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句。
2) Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
3)JSP JavaBean:JavaBean 是特殊的 Java 类,使用 Java 语言书写,并且遵守 JavaBean API 规范。
JavaBean 与其它 Java 类相比而言有一些独一无二的特征:提供一个默认的无参构造函数。
需要被序列化并且实现了 Serializable 接口。
可能有一系列可读写属性。
可能有一系列的 getter 或 setter 方法。
3、实验过程、程序运行效果截图及关键代码段:1)在Eclipse中创建一个工程,工程命名:p0689_82)创建s0689.bean包,并创建以下类DBcon.java Userinfo.java UserinfoDao.java UserinfoImpl.java 以上四个文件已经在实验5中完成,此处不详细给出。
javaBean实验报告

实验报告课程名称Java Web技术实验项目实验4 JavaBean与Servlet 实验仪器实验4 JavaBean与Servlet一、实验目的1.掌握编写JavaBean的规范,学会如何在JSP中使用JavaBean。
2.掌握编写Servlet的规范,学会如何配置Servlet,如何在JSP中使用Servlet3.掌握JSP、JavaBean和Servlet综合应用的基本原则二、实验要求创建一个WEB应用,综合利用JSP、JavaBean和Servlet技术实现用户登录(注册功能选做)。
程序至少包含:一个登录页面,一个欢迎页面,一个servlet和一个bean。
使用实验3中创建的数据库和表t_user,完成如下要求:1.用户在中输入用户名和密码,数据提交给servlet。
2.设计Bean,封装数据库表t_user(实验3中创建的)中一个用户的所有信息。
3.servlet完成用户身份验证(通过从表中条件检索来验证)。
如果用户合法,将该用户所有的信息放入上述bean的实例中,并存入session,转到;否则转到4.从session中取出用户信息并显示。
5.显示错误信息“用户名或密码错误!”,该页面中包含回到的链接。
三、实验结果1.存放的物理位置在F:\workspace\shiyan4\WebContent\ 。
源码如下:<%@ page contentType="text/html;charset=utf-8" language="java"%><html><head><title>用户登陆</title></head><body><form action="/shiyan4/Servlet" method=Get name=form><table><tr><td>用户名:</td><td><input type="text" name="username"></td></tr><tr><td>密码:</td><td><input type="password" name="password"></td><td><input type="submit" name="Login" value="登陆"></td></tr></table></form></body></html>2.bean的名称为information ,物理存放位置在F:\workspace\shiyan4\src\shiyan4\。
javabean及servlet使用实验总结

JavaBean 和 Servlet 是 Java Web 开发中的重要概念,它们的使用可以实现 Web 应用程序的很多功能。
以下是对 JavaBean 和Servlet 使用实验的总结:1. JavaBean:JavaBean 是一种符合特定规范的 Java 类,用于封装数据。
这个规范包括私有属性、公有 getter 和 setter 方法以及无参构造函数。
通过使用 JavaBean,可以将数据与表现分离,提高代码的可重用性和可维护性。
在实验中,我们创建了一个简单的 JavaBean,用于封装用户的姓名和电子邮件地址。
然后,我们在JSP 页面中直接使用这个JavaBean,通过调用 getter 方法获取属性值,并显示在页面上。
使用 JavaBean 可以简化代码,并使其更易于维护。
2. Servlet:Servlet 是用于处理客户端请求和生成动态 Web 内容的一种 Java 类。
Servlet 在服务器端运行,可以处理来自浏览器的 HTTP 请求,并生成 HTTP 响应返回给浏览器。
在实验中,我们创建了一个 Servlet,用于接收客户端传递的用户信息,并将其存储在 JavaBean 中。
然后,我们使用 JSP 页面显示这些信息。
Servlet 的生命周期由服务器管理,可以处理各种类型的请求,并具有很好的扩展性。
3. 总结:通过本次实验,我们了解了 JavaBean 和 Servlet 的基本概念和用法。
JavaBean 可以帮助我们封装数据,使代码更易于维护和重用;而 Servlet 则可以处理客户端请求,生成动态内容,并具有很好的可扩展性。
在实际开发中,我们可以将 JavaBean 和 Servlet 结合使用,实现更复杂的 Web 应用程序。
此外,我们还学习了如何在 JSP 页面中直接使用 JavaBean 和调用Servlet。
这种方式可以使我们的代码更简洁、易于维护和重用。
同时,我们还学习了如何配置 Web 应用程序,使其能够正确地部署和运行。
servlet增删改查

Servlet(增删改查)准备:1.新建一个web项目(StudentZSGC)2.分层,分包一.查(查询学员信息表)(1)新建一个JSP页面(通过form表单进一个servlet(StudentAction))<%@page language="java"import="java.util.*"pageEncoding="utf-8"%> <%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";%><html><head><title>查询学员表</title></head><BODY bgcolor="#FFCCCC"><form action="StudentAction"method="post"><TABLE width="100%"height="100%"><TR align="center"><TD><INPUT TYPE="submit"value="查询学员信息"></TD></TR></TABLE></form></BODY></html>(2)通过web.xml(中转站)找到对应的servlet(StudentAction)(3)进入action层package com.student.action;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 com.student.service.StudentService;public class StudentAction extends HttpServlet {/*** 查询所有人员*/private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//转码req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");resp.setContentType("text/html; charset=utf-8");//调方法StudentService studentService=new StudentService();List<Map<String, Object>> list=null;list=studentService.selectAll();req.setAttribute("StudentList", list);--传回前台进行set//转向if(!list.isEmpty()){ --跳转到该页面req.getRequestDispatcher("Student.jsp").forward(req, resp);}else{req.getRequestDispatcher("Student.jsp").forward(req, resp);}}}(4)进入service类中package com.student.service;import java.util.List;import java.util.Map;import com.student.dao.StudentDao;/*** 查询所有学员信息方法* @author Administrator*/public class StudentService {public List<Map<String, Object>> selectAll() {StudentDao StudentDao=new StudentDao();return StudentDao.selectAll();}}(5)进入dao中连接数据库package com.student.dao;import java.util.List;/*** 查询数据库所有学员放到list中*/import java.util.Map;import com.student.util.Dao;public class StudentDao {Dao dao=new Dao();public List<Map<String, Object>> selectAll() {S tring sql="select s_id, s_number, s_name, s_sex, s_class, s_age, s_add, s_college, s_mobile, s_hobby from student";return dao.select(sql,new Object[]{});}}(6)查询出数据后跳到Student.jsp页面<%@page language="java"import="java.util.*"pageEncoding="utf-8"%><%@page import="java.sql.Array"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>学员列表</title></head><BODY bgcolor="#FFCCCC"><form action=""method="post"><TABLE width="100%"height="100%"><TR><TD align="center"valign="top"><TABLE border="1"><TR><TD colspan="5">学号:<INPUT TYPE="text"NAME="Snumber"></TD><TD colspan="4">姓名:<INPUT TYPE="text"NAME="Sname"></TD><TD colspan="2"><INPUT TYPE="button"value="提交"></TD> </TR><TR><td><input type="checkbox"id="selAll"/></td><TD>id</TD><TD>学号</TD><TD>姓名</TD><TD>性别</TD><TD>班级</TD><TD>年龄</TD><TD>住址</TD><TD>就读院校</TD><TD>联系方式</TD><TD>爱好</TD></TR><!- 接后台容器中的元素-><%List<Map<String, Object>> list=(List<Map<String, Object>>)request.getAttribute("StudentList");for(int i=0;i<list.size();i++){Map<String, Object> map=list.get(i);%><!-前台通过map取值-><TR><td><input type="checkbox" name="selItem"value="<%=map.get("s_id")%>"/></td><TD><%=map.get("s_id")%></TD><TD><%=map.get("s_number")%></TD><TD><%=map.get("s_name")%></TD><TD><%=map.get("s_sex")%></TD><TD><%=map.get("s_class")%></TD><TD><%=map.get("s_age")%></TD><TD><%=map.get("s_add")%></TD><TD><%=map.get("s_college")%></TD><TD><%=map.get("s_mobile")%></TD><TD><%=map.get("s_hobby")%></TD></TR><%}%><TR><TD><A HREF="javascript:openW();">添加</A></TD><TD><A HREF="javascript:upPerson()">修改</A></TD><TD><A HREF="javascript:delPerson()">删除</A></TD></TR></TABLE></TD></TR></TABLE></form></BODY><script LANGUAGE="JavaScript">document.getElementById("selAll").onclick=function(){ var chItem=document.getElementsByName("selItem");for(i=0;i<chItem.length;i++){chItem[i].checked=this.checked;}}function openW(){window.showModalDialog("<%=request.getContextPath()%>/insertPe rson.jsp","","dialogwidth:380px;dialogheight:380px");}="myIndex"function upPerson(){var num = 0;var postId = "";var chItem = document.getElementsByName("selItem");for(i = 0 ; i <chItem.length;i++){if(chItem[i].checked == true){num ++;postId = chItem[i].value;}}if(num != 1){alert("请选择一条数据");}else{location.href ="upServlet?id="+postId;}}function delPerson(){var num = 0;var postId = "";var chItem = document.getElementsByName("selItem");for(i = 0 ; i <chItem.length;i++){if(chItem[i].checked == true){num ++;postId = chItem[i].value;}}if(num <1){alert("请至少选择一条数据");}else{document.forms[0].action="delServlet";document.forms[0].submit();}}</script></html>如下示例:二.增(添加学员)(1)在学员列表页面的添加按钮写一个方法调用函数function openW(){window.showModalDialog("<%=request.getContextPath()%>/insertPerso n.jsp","","dialogwidth:380px;dialogheight:380px");}="myIndex"知识点:1.点击添加跳转该添加页面insertPerson.jsp2. 当表单将要被提交时触发(onsubmit)="javascript:window.close()提交后立即关闭该窗体3.设置或获取目标内容要显示于哪个窗口或框架(target)="myIndex"(2)添加页面单机添加通过form 走servlet( AddPersonAction)<%@page language="java"import="java.util.*"pageEncoding="utf-8"%> <%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";%><html><head><title>添加页面</title></head><BODY bgcolor="#FFCCCC"><form method="get"action="<%=request.getContextPath()%>/AddPersonAction"target="myIndex" onsubmit="javascript:window.close()"><TABLE width="343"height="139"><TR><TD>学 号:</TD><TD><INPUT TYPE="text"NAME="snumber"></TD><TD>*只能输入中文</TD></TR><TR><TD>姓 名:</TD><TD><INPUT TYPE="text"NAME="sname"></TD><TD>*只能输入中文</TD></TR><TR><TD>性 别:</TD><TD><INPUT TYPE="text"NAME="ssex"></TD><TD>*只能输入英文</TD></TR><TR><TD>班 级:</TD><TD><INPUT TYPE="text"NAME="sclass"></TD><TD>*只能输入中文</TD></TR><TR><TD>年 龄:</TD><TD><INPUT TYPE="text" NAME="sage"></TD><TD>*只能输入中文</TD></TR><TR><TD>地 址:</TD><TD><INPUT TYPE="text"NAME="sadd"></TD><TD>*只能输入中文</TD></TR><TR><TD>毕业院校:</TD><TD><INPUT TYPE="text"NAME="scollege"></TD><TD>*只能输入中文</TD></TR><TR><TD>联系方式:</TD><TD><INPUT TYPE="text"NAME="smobile"></TD><TD>*只能输入中文</TD></TR><TR><TD>爱 好:</TD><TD><INPUT TYPE="text"NAME="shobby"></TD><TD>*只能输入中文</TD></TR><tr><td colspan="2"><INPUT TYPE="submit" value="添加"><INPUT TYPE="reset"value="重置"/></td></tr></TABLE></form></BODY></html>(3)找到web.xml(中转站) AddPersonAction<servlet><servlet-name>AddPersonAction</servlet-name><servlet-class>com.student.action.AddPersonAction</servlet-class> </servlet><servlet-mapping><servlet-name>AddPersonAction</servlet-name><url-pattern>/AddPersonAction</url-pattern></servlet-mapping>(4)通过com.student.action.AddPersonAction进action中package com.student.action;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.student.service.AddPersonService;public class AddPersonAction extends HttpServlet {/*** 添加人员*/private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//转码req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//接值 s_id, s_number, s_name, s_sex, s_class, s_age, s_add, s_college, s_mobile, s_hobby知识点:通过添加页面中的 input中的name值接过来的String snumber=(String)req.getParameter("snumber");snumber = new String(snumber.getBytes("ISO8859-1"),"utf-8");String sname=(String)req.getParameter("sname");sname = new String(sname.getBytes("ISO8859-1"),"utf-8");String ssex=(String)req.getParameter("ssex");ssex = new String(ssex.getBytes("ISO8859-1"),"utf-8");String sclass=(String)req.getParameter("sclass");sclass = new String(sclass.getBytes("ISO8859-1"),"utf-8");String sage=(String)req.getParameter("sage");sage = new String(sage.getBytes("ISO8859-1"),"utf-8");String sadd=(String)req.getParameter("sadd");sadd = new String(sadd.getBytes("ISO8859-1"),"utf-8");String scollege=(String)req.getParameter("scollege");scollege = new String(scollege.getBytes("ISO8859-1"),"utf-8");String smobile=(String)req.getParameter("smobile");smobile = new String(smobile.getBytes("ISO8859-1"),"utf-8");String shobby=(String)req.getParameter("shobby");shobby = new String(shobby.getBytes("ISO8859-1"),"utf-8");//调方法AddPersonService addPersonService=new AddPersonService();addPersonService.addPerson(snumber,sname,ssex,sclass,sage,sadd,scolle ge,smobile,shobby);//转向req.getRequestDispatcher("StudentAction").forward(req, resp);知识点:添加完后跳到StudentAction重新查询一遍数据库}}(5)service层package com.student.service;import com.student.dao.AddPersonDao;public class AddPersonService {public boolean addPerson(String snumber, String sname, String ssex, String sclass, String sage, String sadd, String scollege,String smobile, String shobby) {AddPersonDao addPersonDao=new AddPersonDao();Object[] paras=new Object[9];paras[0]=snumber;paras[1]=sname;paras[2]=ssex;paras[3]=sclass;paras[4]=sage;paras[5]=sadd;paras[6]=scollege;paras[7]=smobile;paras[8]=shobby;return addPersonDao.addPerson(paras);}}(6)dao层package com.student.dao;import com.student.util.Dao;public class AddPersonDao {public boolean addPerson(Object[] paras) {Dao dao=new Dao();String sql="insert into student(s_id, s_number, s_name, s_sex,s_class, s_age, s_add, s_college, s_mobile, s_hobby) values(seq.nextval, ?, ?, ?, ?, ?, ?, ?, ?, ?)";int num=dao.executeDML(sql, paras);return num>0?true:false;}}三.改(修改学员信息)分析:总共分两步1.首先走一个servlet查询出要修改的用户信息2.然后再走一个servlet更新用户新输入的学员信息(1)单机修改按钮(2)调用函数uplPerson()(3)根据location连接到servlet(upServlet)知识点:location.href ="upServlet?id="+postId;将选中用户id传入后台以用查询(4)根据web.xml(中转站)找到对应的servlet(5)找到upServletActionpackage com.student.action;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 com.student.service.upServletService;public class upServletAction extends HttpServlet {/*** 修改类*/private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req,HttpServletResponse resp)throws ServletException, IOException {//转码req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//接值//id前台传过来的location.href ="upServlet?id="+postId;String sid=(String)req.getParameter("id");upServletService upServletService=newupServletService();List<Map<String, Object>>list=upServletService.selectStudent(sid);if(!list.isEmpty()){//方便前台取出要被修改学员的信息req.setAttribute("list", list);//下个页面接收传到要跳入的页面UpStudent.jsp页面用该方法接传过来的sidreq.setAttribute("sid", sid);req.getRequestDispatcher("UpStudent.jsp").forward(req, resp);}}}(6)根据其找到对应的service类(7)service类(8)调用upServletDao类(9)前台修改页面取值<%@page language="java"import="java.util.*"pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServ erPort()+path+"/";%><html><head><title>修改页面</title></head><BODY bgcolor="#FFCCCC"><form method="get"action="<%=request.getContextPath()%>/UpStudentAction"target="myIndex"><%%><%//判断数据库中是否有该学员if(request.getAttribute("list")!=null){List<Map<String,Object>>list=(List<Map<String,Object>>)request.getAttribute("list");Map<String,Object> map=list.get(0);%><!-- 接上个页面的id(value="<%=request.getAttribute("sid")%>")下个页面通过 name="id"接收id --><input type="hidden"name="id"value="<%=request.getAttribute("sid")%>"/><TABLE width="343"height="139"><TR><TD>学 号:</TD>//取后台查询出来的值(以下红线均是)<TD><INPUTTYPE="text"NAME="snumber"value="<%=map.get("s_number")%>"></TD><TD>*只能输入中文</TD></TR><TR><TD>姓 名:</TD><TD><INPUT TYPE="text"NAME="sname"value="<%=map.get("s_name")%>"></TD><TD>*只能输入中文</TD></TR><TR><TD>性 别:</TD><TD><INPUT TYPE="text"NAME="ssex"value="<%=map.get("s_sex")%>"></TD><TD>*只能输入英文</TD></TR><TR><TD>班 级:</TD><TD><INPUT TYPE="text"NAME="sclass"value="<%=map.get("s_class")%>"></TD><TD>*只能输入中文</TD></TR><TR><TD>年 龄:</TD><TD><INPUT TYPE="text"NAME="sage"value="<%=map.get("s_age")%>"></TD><TD>*只能输入中文</TD></TR><TR><TD>地 址:</TD><TD><INPUT TYPE="text"NAME="sadd"value="<%=map.get("s_add")%>"></TD><TD>*只能输入中文</TD></TR><TR><TD>毕业院校:</TD><TD><INPUT TYPE="text"NAME="scollege"value="<%=map.get("s_college")%>"></TD><TD>*只能输入中文</TD></TR><TR><TD>联系方式:</TD><TD><INPUT TYPE="text"NAME="smobile"value="<%=map.get("s_mobile")%>"></TD><TD>*只能输入中文</TD></TR><TR><TD>爱 好:</TD><TD><INPUT TYPE="text"NAME="shobby"value="<%=map.get("s_hobby")%>"></TD><TD>*只能输入中文</TD></TR><tr><td colspan="2"><INPUT TYPE="submit"value="修改"><INPUT TYPE="reset"value="重置"/></td></tr></TABLE><%} %></form></BODY></html>完成以上即完成第一步查询出要修改的学员信息并返回给前台页面(如图所示)选中一条数据单机修改第二步骤更新用户新输入的学员信息(10)用户对其进行修改,改完后单机修改按钮根据form表单走一个servlet(upStudentAction)(11)到web.xmlz中找到对应的servlet(12)action层package com.student.action;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.student.service.UpStudentService;public class UpStudentAction extends HttpServlet {/*** 修改选中的用户信息*/private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//转码req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//接值跟据修改页面里的input里的name属性接到的String sid=(String)req.getParameter("id");String snumber=(String)req.getParameter("snumber");snumber = new String(snumber.getBytes("ISO8859-1"),"utf-8");String sname=(String)req.getParameter("sname");sname = new String(sname.getBytes("ISO8859-1"),"utf-8");String ssex=(String)req.getParameter("ssex");ssex = new String(ssex.getBytes("ISO8859-1"),"utf-8");String sclass=(String)req.getParameter("sclass");sclass = new String(sclass.getBytes("ISO8859-1"),"utf-8");String sage=(String)req.getParameter("sage");sage = new String(sage.getBytes("ISO8859-1"),"utf-8");String sadd=(String)req.getParameter("sadd");sadd = new String(sadd.getBytes("ISO8859-1"),"utf-8");String scollege=(String)req.getParameter("scollege");scollege = newString(scollege.getBytes("ISO8859-1"),"utf-8");String smobile=(String)req.getParameter("smobile");smobile = new String(smobile.getBytes("ISO8859-1"),"utf-8");String shobby=(String)req.getParameter("shobby");shobby = new String(shobby.getBytes("ISO8859-1"),"utf-8");//调方法UpStudentService upStudentService=new UpStudentService();if(upStudentService.upStudent(snumber,sname,ssex,sclass,sage,sadd,s college,smobile,shobby,sid)){// 修改后跳到(StudentAction)servlet中在重新查询遍更新后的信息 req.getRequestDispatcher("StudentAction").forward(req, resp);}}}(13)走到service层(14)走到dao层四.删(删除学员信息)(1)单机删除按钮调用delPerson()(2)调用函数走delServlet(3)通过web.xml找到对应的servlet(4)action层package com.student.action;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.student.service.delServletService;/*** 删除数据* @author Administrator*/public class delServletAction extends HttpServlet { private static final long serialVersionUID = 1L;@Overridep rotected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { // 转码req.setCharacterEncoding("utf-8");resp.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//接值// String sid=(String)req.getParameter("id");//根据该条接收到的idString[] ids=req.getParameterValues("selItem");//掉方法delServletService delServletService=newdelServletService();if(delServletService.delStudent(ids)){req.getRequestDispatcher("StudentAction").forward(req, resp);}else{S ystem.out.println("删除失败");}}}(5)service层(6)dao层五.实现学员信息单独放在一个区域如下:将学员信息列表table外放一个div知识点:auto Content is clipped and scrolling is added only when necessary.<table>…………..</table></div>六.模糊查询1.两个参数:学号和用户名同时模糊(两个都需要like)Sql:select s_id, s_number, s_name, s_sex, s_class, s_age, s_add, s_college, s_mobile, s_hobby from student where s_number like ? and s_name like ?Dao: 将参数前后加%:如果其他地方用到select方法的将其sql语句改成like(修改时查修改用户信息时用)。
使用JSPSERVLETJDBC实现对数据库的增删改查(详细)(精)

public void setCurrentRecord(int currentRecord{
this.currentRecord=currentRecord;
}
//获得和设置每页记录数量
public int getPageSize({
return pageSize;
}
public void setPageSize(int pageSize{
private int totalRecord;
private int currentRecord;
private int pageSize=8;
//获得和设置当前页
public int getCurrentPage({
return currentPage;
}
public void setCurrentPage(int currentRecord,int pageSize{
String major=request.getParameter("major";
conn=connect(;
stat=conn.createStatement(;
stat.execute("insert into student(id,name,age,gender,major values("+id+",'"+name+"',"+age+",'"+gender+"','"+major+"'";
// TODO Auto-generated catch block
javaBean实验报告

javaBean实验报告一、实验目的1、深入理解 JavaBean 的概念和作用。
2、掌握如何创建、使用和配置 JavaBean。
3、学会在 Java Web 应用中运用 JavaBean 来提高代码的可维护性和可复用性。
二、实验环境1、操作系统:Windows 102、开发工具:Eclipse IDE for Java EE Developers3、服务器:Apache Tomcat 904、 JDK 版本:JDK 18三、实验原理JavaBean 是一种遵循特定规范的 Java 类,它具有私有属性、公共的 getter 和 setter 方法,以及一个无参的构造函数。
通过这些规范,可以方便地对属性进行访问和修改,同时也有利于代码的封装和复用。
四、实验内容(一)创建 JavaBean创建一个名为`Student` 的 JavaBean 类,包含学生的学号(`id`)、姓名(`name`)和年龄(`age`)三个属性。
代码如下:```javapublic class Student {private int id;private String name;private int age;public Student(){}public int getId(){return id;}public void setId(int id) {thisid = id;}public String getName(){return name;}public void setName(String name) {thisname = name;}public int getAge(){return age;}public void setAge(int age) {thisage = age;}}```(二)在 JSP 页面中使用 JavaBean创建一个名为`useStudentjsp` 的 JSP 页面,通过`<jsp:useBean>`标签实例化`Student` 对象,并通过`<jsp:getProperty>`和`<jsp:setProperty>`标签来获取和设置属性值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌航空大学实验报告二二0一四年三月十九日课程名称:JA V A WEB 程序设计实验名称:JavaBean和Servlet完成增删改查班级:11微软班姓名:林平君同组人:指导教师评定:林振荣签名:一、实验目的完成一个数据列表的增删改查功能的实现,以自己创建的表格为例,也可以自己设计数据库的表。
通过本实验能够熟悉和掌握jsp中的数据库CRUD操作。
二、实验要求本实验要求通过javabean来实现数据的存取和表示,通过servlet来进行访问的控制。
给出主要运行的界面和核心代码,并描述系统实现的核心思想。
三、实验步骤1.实现javaBean对数据库的操作。
2.创建jsp页面3.利用servlet对页面对业务流程就行控制。
四、参考源代码1.连接数据库public Connection getConnection() throwsSQLException,InstantiationException,IllegalAccessException,ClassNotFoundException{Connection connection=null;Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInst ance();StringurlString="jdbc:sqlserver://localhost:1433;DatabaseName=StudentManageSys" ;String passwordString="sa";String userString="sa";connection=DriverManager.getConnection(urlString,userString,passwordS tring);return connection;}解释:获取一个数据源,用于连接数据库。
2.利用传入的sql语句查找public ArrayList<student> objectSelect(String sql) throws Exception{ ArrayList<student> result=new ArrayList<student>();Connection connection=null;Statement statement=null;ResultSet resultSet=null;try{connection=getConnection();statement=connection.createStatement();resultSet=statement.executeQuery(sql);while(resultSet.next()){student stu=new student();stu.setSid(resultSet.getInt("sid"));stu.setSsno(resultSet.getString("ssno"));stu.setSname(resultSet.getString("sname"));stu.setSsex(resultSet.getString("ssex"));stu.setIsManage(resultSet.getInt("isManage"));stu.setLoginTimes(resultSet.getInt("loginTimes"));stu.setLoginLastTime(resultSet.getString("loginLastTime"));stu.setPassword(resultSet.getInt("password"));stu.setSage(resultSet.getInt("sage"));result.add(stu);}}catch (SQLException e) {throw new SQLException("select data exception:"+e.getMessage());}catch(Exception exception){throw new Exception("system eexception:"+exception.getMessage());}finally{try{if(resultSet!=null){resultSet.close();}}catch(Exception e){throw new Exception("statement closeexception:"+e.getMessage());}try{if(connection!=null){connection.close();}}catch(Exception e){throw new Exception("Connection closeexception:"+e.getMessage());}}return result;}3.向数据库中插入数据public void insert(student student)throws Exception{Connection connection=null;PreparedStatement pStatement=null;String sql="insert intostudent(ssno,sname,ssex,isManage,password,sage)values('"+student.getSsno()+"','"+student.getSname()+"','"+student.getSse x()+"',"+student.getIsManage()+","+student.getPassword()+","+student.getS age()+")";try{connection=getConnection();pStatement=connection.prepareStatement(sql);pStatement.execute();}catch(SQLException e){throw new Exception("sql a exception:"+e.getMessage());}catch(Exception e){throw new Exception("system a exception:"+e.getMessage());}finally{try{if(pStatement!=null){ pStatement.close(); }}catch(Exception exception){throw new Exception("PrepareStatement close exception:"+exception.getMessage());}}try {if(connection!=null)connection.close();} catch ( Exception e) {// TODO: handle exceptionthrow new Exception("connection closeexception:"+e.getMessage());}}//通过传入的student对象删除表中的数据public void delete(student student) throws Exception{Connection connection=null;PreparedStatement pStatement=null;String sql="delete from student where sid="+student.getSid()+"";try{connection=getConnection();pStatement=connection.prepareStatement(sql);pStatement.execute();}catch (SQLException e) {// TODO: handle exceptionthrow new Exception("SQL a exception:"+e.getMessage());}catch(Exception e){throw new Exception("System a exception:"+e.getMessage());}finally{try{if(pStatement!=null){ pStatement.close(); }}catch(Exception exception){throw new Exception("PrepareStatement close exception:"+exception.getMessage());}}try {if(connection!=null)connection.close();} catch ( Exception e) {// TODO: handle exceptionthrow new Exception("connection closeexception:"+e.getMessage());}}4.修改数据库中的数据public void update(student student)throws Exception{Connection connection=null;PreparedStatement pStatement=null;String sql="update student setssno="+student.getSsno()+",sname='"+student.getSname()+"',ssex='"+student .getSsex()+"'," +"isManage="+student.getIsManage()+",password="+student.getPassword()+ "," +"sage="+student.getSage()+",loginTimes='"+student.getLoginTimes()+"', " +"loginLastTime='"+student.getLoginLastTime()+"'wheresid="+student.getSid()+"";try{connection=getConnection();pStatement=connection.prepareStatement(sql);pStatement.execute();}catch (SQLException e) {// TODO: handle exceptionthrow new Exception("SQL a exception:"+e.getMessage());5.servlet对业务逻辑的控制public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{response.setContentType("text/html");request.setCharacterEncoding("gb2312");response.setCharacterEncoding("gb2312");PrintWriter out=response.getWriter();String name=request.getParameter("username");int password=Integer.parseInt(request.getParameter("password"));int loginTimes;String loginLastTime;HttpSession session = request.getSession();session.setAttribute("username", name);String sql = "select * from student where sname='"+name+"'";ORMDBUtil ormdbUtil=new ORMDBUtil();Date data=new Date();Format fm=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try {student stu =new student();student student=new student();ArrayList<student> result=ormdbUtil.objectSelect(sql);if(result.isEmpty()==false){for(int i=0;i<result.size();i++){stu=result.get(i);}loginTimes=stu.getLoginTimes()+1;loginLastTime=fm.format(data);student.setLoginTimes(loginTimes);student.setLoginLastTime(loginLastTime);student.setIsManage(stu.getIsManage());student.setPassword(stu.getPassword());student.setSage(stu.getSage());student.setSname(stu.getSname());student.setSsex(stu.getSsex());student.setSsno(stu.getSsno());student.setSid(stu.getSid());ormdbUtil.update(student);if(password!=stu.getPassword()){out.println("<html>");out.println("<head>");out.println("<title>密码错误</title>");out.println("</head>");out.println("<body>");out.println("<h1>密码错误!</h1>");out.println("</body>");out.println("</html>");}else if(stu.getIsManage()==0){//跳转到普通用户界面//getServletConfig().getServletContext().getRequestDispatcher("/Ordin ary.jsp").forward(request, response);int userId=stu.getSid();request.setAttribute("id", userId);//为id赋值//session.setAttribute("loginTimes", loginTimes);//session.setAttribute("loginLastTime", loginLastTime);//RequestDispatcherde=request.getRequestDispatcher("/Ordinary.jsp");getServletContext().getRequestDispatcher("/Ordinary.jsp").forward(req uest,response);}else if(stu.getIsManage()==1){//重定向跳到管理员界面response.sendRedirect("Manager.jsp");//getServletContext().getRequestDispatcher("/Manager.jsp").forward(re quest,response);}}else//用户不存在{out.println("<html>");out.println("<head>");out.println("<title>用户不存在</title>");out.println("</head>");out.println("<body>");out.println("<h1>用户不存在!</h1>");out.println("</body>");out.println("</html>");}} catch (Exception e) {// TODO Auto-generated catch blocke.getStackTrace();}}五、实验结果1.以管理员身份登陆将跳转到:2.以普遍身份登陆:将跳转到:注册页面:在管理员界面可以看到新注册的:点击修改:六、实验体会本次实验对我的帮助很大,让我更加熟悉了jsp中的逻辑操作,对数据库以及逻辑方面的操作更加的熟练,熟悉了javaBean以及servlet的操作,初步的了解了MVC的框架。