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进行数据添加,后续的删改查会继续更新。

 

posted on 2021-11-03 17:40  跨越&尘世  阅读(217)  评论(0编辑  收藏  举报