mvc思路编写修改的代码思路
Posted 数模堂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mvc思路编写修改的代码思路相关的知识,希望对你有一定的参考价值。
1、出场语
2、复习题
3、mvc思路理清修改、增加、删除、查询思路,并参考代码
学习学习再学习
请注意,以上7个字不是由三个动词构成的句子。
在这个句子中,第一个是动词,第二个是名词,第三个是动词,所以我借鉴高人的这句话是说:要先学会学习这件事儿,然后再接着去学习,这样才真的有意思,真的不是“学啊学啊”的意思,也不是只看书本的意思,更不是所谓的“重要的事情说三遍”......
古语有云“三人行,必有我师焉”,更高的境界还有“万物为师”,反正我是差得远,但愿你我都在路上前进着。出场语结束,只为共勉
MVC模式中,M指的是(),V指的是(),C指的是()
· A、模型
· B、视图
· C、控制器
· D、逻辑
MVC模式的优点有()
· A、各司其职,互不干涉
· B、利于分工
· C、利于重用和扩展
· D、降低了开发工作量
整个MVC的流程就是:用户发送一个请求,首先由()接收,然后根据请求去调用()处理并返回数据,接着调用相应的()把数据响应给用户
· A、表现层
· B、控制层
· C、模型层
· D、视图层
到此,我们对mvc加深的认识,但是它究竟在项目里面怎么来体现它的优势呢?下面就进入我们今天的重点:mvc思路编写修改的代码
我们就分三步走:
第一步:m
第二步:c
第三步:v
正如下图,数据是从上往下流动,并且最终修改数据库的
1、m(正如图上所示,包含dbconection/dbhelper和修改方法)
public class DBHelper {
private static String URL = "jdbc:mysql://localhost:3306/bbs_db";
private static String NAME = "root";
private static String PWD = "root";
private static String DRIVER = "com.mysql.jdbc.Driver";
static {
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
// 获取数据库连接对象并且返回的方法
public static Connection getConn() {
try {
Connection conn = DriverManager.getConnection(URL, NAME, PWD);
return conn;
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 释放关闭资源的方法
public static void close(Connection conn, PreparedStatement pstmt, ResultSet rst) {
try {
if (rst != null) {
rst.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Connection conn = DBHelper.getConn();
System.out.println(conn);
}
利用面向对象这种思想(调用dbconnection/dbhelper对象来获取连接)
public class TopicDao2 {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rst = null;
//修改
public boolean updateTopic(TopicInfo topicInfo){
boolean isSuccess = false;
//1、获取连接
conn = DBHelper.getConn();
//2、写增加对应的sql语句
/**
* topicId
topicTitle
topicContent
topicUserId
topicClicks
topicTime
*/
String sql = "update tb_topic set topicTitle=?,topicContent=?,topicUserId=?,topicClicks=?,topicTime=? where topicId=?";
//3、执行sql语句并获取结果
//执行sql语句
//java.sql.SQLException: No value specified for parameter 1
//sql语句不完整的时候,就会报上面这个错误
try {
pstmt = conn.prepareStatement(sql);
pstmt.setObject(1, topicInfo.getTopicTitle());//用标题替换第一个?号
pstmt.setObject(2, topicInfo.getTopicContent());//用标题替换第一个?号
pstmt.setObject(3, topicInfo.getTopicId());//用标题替换第一个?号
pstmt.setObject(4, topicInfo.getTopicClicks());//用标题替换第一个?号
pstmt.setObject(5, topicInfo.getTopicTime());//用标题替换第一个?号
pstmt.setObject(6, topicInfo.getTopicId());//用标题替换第一个?号
int res = pstmt.executeUpdate();
if(res>0){
//修改了一行,受影响的行数就为1,res为1 >0
isSuccess = true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
DBHelper.close(conn, pstmt, rst);
}
//4、返回结果
return isSuccess;
}
2、c(UpdateServlet2)
package com.bbs.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.bbs.dao.TopicDao2;
import com.bbs.pojo.TopicInfo;
/**
* Servlet implementation class UpdateServlet2
* @WebServlet("/UpdateServlet2")是注解的方式,等同于web.xml里面
*
* servlet
*
* servlet-class
* servlet-mapping
*/
@WebServlet("/UpdateServlet2")
public class UpdateServlet2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理修改请求
//处于界面-dao里面承上启下的作用,呈上:获取界面传过来的
/**
* topicId
topicTitle
topicContent
topicUserId
topicClicks
topicTime
*/
String topicId = request.getParameter("topicId");
String topicTitle = request.getParameter("topicTitle");
String topicContent = request.getParameter("topicContent");
String topicUserId = request.getParameter("topicUserId");
String topicClicks = request.getParameter("topicClicks");
String topicTime = request.getParameter("topicTime");
TopicInfo topicInfo = new TopicInfo();
topicInfo.setTopicClicks(Integer.parseInt(topicClicks));
topicInfo.setTopicId(Integer.parseInt(topicId));
topicInfo.setTopicTitle(topicTitle);
topicInfo.setTopicContent(topicContent);
topicInfo.setTopicUserId(Integer.parseInt(topicUserId));
topicInfo.setTopicTime(topicTime);
//新的帖子的内容
//启下:调用dao里面的修改的方法来实现最终的修改的效果
TopicDao2 dao = new TopicDao2();
boolean isSuccess = dao.updateTopic(topicInfo);
if(isSuccess){
//
request.getRequestDispatcher("/topics").forward(request, response);
}
}
}
<form action="UpdateServlet2">
topicId:<input name="topicId"/><br/>
topicTitle:<input name="topicTitle"/><br/>
topicContent:<input name="topicContent" /><br/>
topicUserId:<input name="topicUserId" /><br/>
topicClicks:<input name="topicClicks" /><br/>
topicTime:<input name="topicTime" /><br/>
<input type="submit" value="tijiao"/>
</form>
上图的从上到下的数据流动过程,正如下面代码从右到左的执行过程(update2.jsp界面到UpdateServlet2.java最后到TopicDao2),另外TopicDao2引用了dbhelper,就完了,希望各位同学参考这种方法理清思路。修改如此,增加,删除,查询亦如此。
以上是关于mvc思路编写修改的代码思路的主要内容,如果未能解决你的问题,请参考以下文章