Java学习--Servlet+jsp+javabean实现课程添加
之前在写课程添加时,使用.jsp实现后端处理然后存入数据库。现在使用Servlet处理前端传过来的数据,然后存入数据库。这次使用的时.jsp界面,以后会使用.html时会更新。
我首先讲解下Servlet中的request和respone。
request的常见方法
request.getRequestURL(): 浏览器发出请求时的完整URL,包括协议 主机名 端口(如果有)"
request.getRequestURI(): 浏览器发出请求的资源名部分,去掉了协议和主机名"
request.getQueryString(): 请求行中的参数部分,只能显示以get方式发出的参数,post方式的看不到
request.getRemoteAddr(): 浏览器所处于的客户机的IP地址
request.getRemoteHost(): 浏览器所处于的客户机的主机名
request.getRemotePort(): 浏览器所处于的客户机使用的网络端口
request.getLocalAddr(): 服务器的IP地址
request.getLocalName(): 服务器的主机名
request.getMethod(): 得到客户机请求方式一般是GET或者POST
获取参数(客户端提交的数据)
request.getParameter(String): 是常见的方法,用于获取单值的参数
request.getParameterValues(String name): 用于获取具有多值的参数,比如注册时候提交的 "hobits",可以是多选的。
request.getParameterMap(): 用于遍历所有的参数,并返回Map类型。(编写框架时常用)
获取头信息
request.getHeader() 获取浏览器传递过来的头信息。
比如getHeader("user-agent") 可以获取浏览器的基本资料,这样就能判断是firefox、IE、chrome、或者是safari浏览器
request.getHeaderNames() 获取浏览器所有的头信息名称,根据头信息名称就能遍历出所有的头信息
在本例,修改HelloServlet,使其获取头信息
访问HelloServlet获取如下头信息:
host: 主机地址
user-agent: 浏览器基本资料
accept: 表示浏览器接受的数据类型
accept-language: 表示浏览器接受的语言
accept-encoding: 表示浏览器接受的压缩方式,是压缩方式,并非编码
connection: 是否保持连接
cache-control: 缓存时限
response是HttpServletResponse的实例,用于提供给浏览器的响应信息
1、负责向客户端(浏览器)发送数据的相关方法
2.负责向客户端(浏览器)发送响应头的相关方法
3、负责向客户端(浏览器)发送响应状态码的相关方法
客户端出现各种数字的含义:200--请求成功 302--请求定向 404--服务器收到,数据不存在 500--服务器内部错误
环境idea
代码
1 package dao; 2 3 import java.sql.*; 4 5 public class DBUtil { 6 static String url="jdbc:mysql://localhost:3306/数据库名"; 7 static String user="root"; 8 static String passwd="密码"; 9 public static Connection getConnection(){ 10 Connection conn=null; 11 try { 12 Class.forName("com.mysql.jdbc.Driver"); 13 conn= DriverManager.getConnection(url,user,passwd); 14 System.out.println("连接成功"); 15 } catch (Exception e) { 16 System.out.println("连接失败"); 17 e.printStackTrace(); 18 } 19 return conn; 20 } 21 //释放资源 22 public static void close(Statement stmt, Connection conn, PreparedStatement ps,ResultSet rs){ 23 if(stmt!=null){ 24 try { 25 stmt.close(); 26 } catch (SQLException e) { 27 e.printStackTrace(); 28 } 29 } 30 if(conn!=null){ 31 try { 32 conn.close(); 33 } catch (SQLException e) { 34 e.printStackTrace(); 35 } 36 } 37 if(ps!=null){ 38 try { 39 ps.close(); 40 } catch (SQLException e) { 41 e.printStackTrace(); 42 } 43 } 44 45 if(rs!=null){ 46 try { 47 rs.close(); 48 } catch (SQLException e) { 49 e.printStackTrace(); 50 } 51 } 52 } 53 }
1 package dao; 2 3 import entity.School; 4 5 public interface SchoolDao { 6 public boolean add(School school); 7 }
1 package dao; 2 3 import entity.School; 4 5 import java.sql.*; 6 7 public class SchoolDaoImpl implements SchoolDao { 8 Connection conn = (Connection) DBUtil.getConnection(); 9 10 11 @Override 12 public boolean add(School school) { 13 boolean flag=false; 14 ResultSet rs=null; 15 String sql="insert into 表名 values(?,?,?)"; 16 try { 17 PreparedStatement pstmt= conn.prepareStatement(sql); 18 pstmt.setString(1, school.getClassname());//必须有,不加上没法将数据加进数据库 19 pstmt.setString(2, school.getTeacher()); 20 pstmt.setString(3, school.getPlace()); 21 int i= pstmt.executeUpdate(); 22 pstmt.close(); 23 conn.close(); 24 if(i>0){ 25 flag=true; 26 } 27 } catch (SQLException e) { 28 e.printStackTrace(); 29 } 30 return flag; 31 } 32 }
1 package entity; 2 3 public class School { 4 private String classname; 5 private String teacher; 6 private String place; 7 8 public String getClassname() { 9 return classname; 10 } 11 12 public void setClassname(String classname) { 13 this.classname = classname; 14 } 15 16 public String getTeacher() { 17 return teacher; 18 } 19 20 public void setTeacher(String teacher) { 21 this.teacher = teacher; 22 } 23 24 public String getPlace() { 25 return place; 26 } 27 28 public void setPlace(String place) { 29 this.place = place; 30 } 31 }
1 package SchoolAddServlet; 2 3 import dao.SchoolDao; 4 import dao.SchoolDaoImpl; 5 import entity.School; 6 7 import javax.servlet.*; 8 import javax.servlet.http.*; 9 import javax.servlet.annotation.*; 10 import java.io.IOException; 11 12 @WebServlet(name = "addServlet", value = "/addServlet") 13 public class addServlet extends HttpServlet { 14 private static final long serialVersionUID = 1L;
//这块删了一些不需要的代码
38 39 @Override 40 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 41 request.setCharacterEncoding("UTF-8"); 42 response.setContentType("text/html;charset=utf-8"); 43 44 String classname=request.getParameter("classname"); 45 String teacher=request.getParameter("teacher"); 46 String place=request.getParameter("place"); 47 School Subject=new School(); 48 Subject.setClassname(classname); 49 Subject.setTeacher(teacher); 50 Subject.setPlace(place); 51 52 SchoolDao sd=new SchoolDaoImpl(); 53 try { 54 sd.add(Subject); 55 System.out.println("添加成功"); 56 response.sendRedirect(request.getContextPath() + "/school.jsp");//跳转界面 57 }catch(Exception e){ 58 System.out.println("添加失败"); 59 e.printStackTrace(); 60 } 61 } 62 }
1 <!--本人信息--> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html> 10 <head> 11 <meta charset="UTF-8"> 12 <title>主页面</title> 13 </head> 14 <body> 15 <div id="addSubjectForm" align="center"> 16 <form action="addServlet" method="Post"> 17 <tr> 18 <td>课程信息管理系统</td> 19 </tr> 20 <ul> 21 <li><a href="schooladd.jsp">课程信息添加</a> </li> 22 </ul> 23 </form> 24 </div> 25 </body> 26 </html>
1 <!--本人信息--> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <html> 10 <head> 11 <title>课程添加</title> 12 </head> 13 <body> 14 <div id="addSubjectForm" align="center"> 15 <form action="addServlet" method="Post"> 16 <tr> 17 <td>课程名称</td> 18 <td><input type="text" name="classname" size="20"><br></td> 19 </tr> 20 <tr> 21 <td>任课教师</td> 22 <td><input type="text" name="teacher" size="20"><br></td> 23 </tr> 24 <tr> 25 <td>上课地点</td> 26 <td><input type="text" name="place" size="20"><br></td> 27 </tr> 28 <tr> 29 <td colspan="2"><div align="center"><input type="submit" value="添加"></div> 30 31 </td> 32 </tr> 33 </form> 34 </div> 35 </body> 36 </html>
包的结构
创建Servlet需要先导入servlet包,在tomcat的lib包下
如果右键没有Servlet需要将下图中的Source Roots打上√
这只是应用Servlet进行数据添加,后续的删改查会继续更新。