JavaWeb学习(二)快速实现Web页面的开发

MVC:三层架构

(一)表示层
1、表示前台代码:JSP
2、表示后台代码:Servlet
(二)业务逻辑层 (逻辑、可拆)
  增  删  改  查   :Service
(三)数据访问层 (原子 )
  增  删  改  查   :JDBC、Dao

一、JSP

(一)语法:

1. 注释: <%--...........--%>

2. 直接输出: <=%----%>

3. 写入java代码: <%.............%>

4. 定义方法: <%!...............%>

<%!%>是用来定义成员变量属性和方法的,<%%>主要是用来输出内容的,因此如果涉及到了成员变量的操作,那么我们就应该使用<!%%>,而如果是涉及到了输出内容的时候,就使用<%%>。

(二) reques:

1、获取JSP页面谁的参数:request.getParemeter(String name)

2、转发:request.getRequestDispatcher( b.jsp ).forward( request,response)

(三)response

1、重定向跳转页面,不保留数据:response.sendRedirect(a.jsp)

(四)导包问题

<% page import = "自己建的包名">

二、JDBC

(一)基本方法:

1、DriverManager : 管理驱动

2、Connection:链接

3、PreparedStatement:操作

4、CallableStatement:调用数据库中储存函数

5、Result:返回结果集

(二)步骤

1、链接数据库

 public static Connection getConnection() throws Exception, SQLException {
        Connection connection = null;
        PreparedStatement pstmt = null;
        ResultSet re = null;

(1)普通方法:
Class.forName(
"com.mysql.cj.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名 ?useUnicode=true&characterEncoding=utf8", "root", "123456"); (2)数据池:
1.加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("数据池地址"));
2.连接数据池
DataSourse dataSourse = DruidDataSourseFactory.createDataSourse(prop);
3.获取数据库连接
Connection connection = dataSourse.getConnnection();
return connection; } public static void close(Connection connection) { if(connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(PreparedStatement preparedStatement) { if(preparedStatement != null) { try { preparedStatement.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close(ResultSet resultSet) { if(resultSet != null) { try { resultSet.close(); } catch (SQLException e) { e.printStackTrace(); } } }

 

2、sql语句: sql = "     "

3、获取对象

PreparedStatement  pstmt = connection.preparedStatement (sql);

String sql = "insert into 数据库名(......) value (?,?,?,?,?)

pstmt.setInt(1,固定值 / 对象.get函数)

(1)添加

String sql = "insert into 数据库名(......) value (?,?,?,?,?)";
PreparedStatement  pstmt = connection.preparedStatement (sql);
pstmt.setInt(1,固定值 / 对象.get函数);
pstmt.setString(2,值);
int count = pstmt.executeUpdata();
   影响的行数              增删改

(2)查询

(1)查询全部
String sql = "select * from 数据库名";
PreparedStatement  pstmt = connection.preparedStatement (sql);

ResultSet rs = pstmt.executeQuery();
   影响的行数                  查
List<Bean> list = new Arraylist();
while( rs.next())
{
                             int id = rs.getInt("id");
                             ......
构建Javabean对象              1. Bean bean = new Bean();
                                 bean.setId( id);  
                             2. Bean bean = new Bean( id , name );

入数据库                  list.add( bean );
}
return list;
(2)单条查询
String sql = "select * from 数据库名 where ";
PreparedStatement  pstmt = connection.preparedStatement (sql);
pstmt.setInt(1,id);
ResultSet rs = pstmt.executeQuery();
   影响的行数                  查
Bean bean = new Bean();
while( rs.next())
{
                             int id = rs.getInt("id");
                             ......
构建Javabean对象              1. bean.setId( id);  
                             2. bean = new Bean( id , name );
}
return bean;

(3)修改

String sql =  "update 表名\n"+
                "set  hu_bie  = ?,\n "+
                 "idc  = ?,\n " +
                 "name = ?,\n"+
                 "sex = ?\n" +
                "where id = ?";
PreparedStatement  pstmt = connection.preparedStatement (sql);
pstmt.setInt(1,固定值 / 对象.get函数);
pstmt.setString(2,值);

int count = pstmt.executeUpdata();
   影响的行数              增删改
return count;

(4)删除

        Connection connection = jdbcUtil.getConnection();
        String sql = "delete from 表名 where id = ?";

        PreparedStatement pstmt = null;
        pstmt = connection.prepareStatement(sql);

        pstmt.setInt(1,  person.getId());

        int count =pstmt.executeUpdate();
        jdbcUtil.close(connection);
        jdbcUtil.close(pstmt);

        return count;

 

三、Servlet

(一)准备

25版本:在web.xml中配置

<servlet>

   <servlet-name> servlet名字 </servlet>

  <servlet-class>地址</servlet>

</servlet>

<servlet-mapping>

    <servlet-name> servlet名字 </servlet>

    <url-pattern>  / servlet名字 </url-pattern>

</servlet-mapping>

30版本: Servlet头 @WebServlet("根目录")

(二) 书写

request.setcharaterEncoding("utf-8")
request.getParameter("传参名")
构建JavaBen对象,利用有参构造
Jsp中写 : Servlet?method=add 在Servlet中添加方法
1.   String name = request.getParameter("name")
2.    int id = Integer.parseInt(request.getParameter())
Service service = new Service();
service.add(对象)
跳转页面
1. request.getRequestDispatcher( b.jsp ).forward( request,response)
2. 提示框
3. PrintWirter out = response.getWriter();
    out.write("你好")   /  out.println("你好")

(三) 提示框

Servlet中:
if()
request.setAttribute("message","添加成功");
else 
------------------------------------添加失败;
request.getRequestDispatcher("add.jsp").forward(request , response)

JSP中:
<%  Object message = request.getAttribute("message")
        if(message  != null && !"".equals(message)) {
%>

<script  type = "text/javascript">
alert(" <%= request.getAttribute(" ") %>")
</script>

<%  }  %>

 

四、Service

(一)书写

1 Dao dao = new  dao;
2 public boolean add( Bean bean) 
3 {
4  dao.add(bean); 
5 }

 

五、制作一张查询详细信息的表格

 

(一)外层JSP

列名:
<table border="1px"> <tr> <th>学号</th> <th>姓名</th> </tr> (一)Servlet中, request.setAttribute("list" , list) request.getRequestDispatcher(JSP).forward(re,re) (二)JSP中 : <% List<Student> list = (List<>) request.getAttribute("list");

(二)内层JSP

按学号查询某人信息
(一)Servlet中, request.setAttribute(
"student" , student) request.getRequestDispatcher(JSP).forward(re,re)
(二)JSP中 :
<% Student student = (Student) request.getAttribute("studetn");

传入地址同时传入参数
<form action=" Servlet?method=updata && id=<%=student.getId() %> "

/ "Servlet ? id =<%=student.getId() %>"
/ "Servlet?method=updata && id=${itemid} " 普通文本: 学号: <input type = "text" name = id value = "<%=student.getId() %> readonly="readonly"(只读) >
单多选: <tr> <td>性别<input value="<%=persons.getSex()%>"/></td> <td> <label> <input type="radio" name="sex" value="男"><input type="radio" name="sex" value="女"></label> </td> </tr> <tr align="center"> <td colspan="2"> <input type="submit" value="提交" /> <input type="reset" value="重置" /> </td> </tr> </table> <a href="index.jsp">返回主页</a>

 

(二)优化查询

1 <c: forEach items="${list}" var="item"> 
2     <tr> 
3       <td>${item.id}</td> 
4             ......................
5       <td>
6      <tr>
7 <a href="Servlet?method=del&&id=${item.id}">删除</a></td> </c:forEach>

 

posted @ 2022-10-18 23:38  旺旺大菠萝  阅读(446)  评论(0编辑  收藏  举报