参考:https://blog.csdn.net/qq_33369905/article/details/106647313
关于servlet编程: 1.可以通过继承HttpServlet实现Servlet程序在一般项目开发中一般很少使用Servlet接口来实现Servlet程序,一般都是使用继承HttpServlet类的方式去实现Serlvet程序
2.根据需要重写doGet和doPost方法package com.kuang.servlet;
//实现Servlet接口
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//取得参数
String method = req.getParameter("method");
if (method.equals("add")){
req.getSession().setAttribute("msg","执行了add方法");
}
if (method.equals("delete")){
req.getSession().setAttribute("msg","执行了delete方法");
}
//业务逻辑
//视图跳转
req.getRequestDispatcher("/WEB-INF/jsp/hello.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
此时 在web.xml中配置的就是
springMVC的原理HelloServlet com.kuang.servlet.HelloServlet HelloServlet /user
Spring MVC是Spring framework的一部分,是基于Java实现MVC的轻量级Web框架。
MVC框架要做哪些事情 将url映射到java类或java类的方法 . 封装用户提交的数据 . 处理请求--调用相关的业务处理--封装响应数据 . 将响应的数据进行渲染 . jsp / html 等表示层数据 .
SpringMVC的原理如下图所示:
当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。
以上的实线部分不需要自己做
虚线部分是自己实现的
springmvc运行原理看这个https://www.bilibili.com/video/BV1aE41167Tu?p=5
使用注解开发时:
这个替代了原来的映射器、适配器
使用注解开发时springmvc-servlet.xml的配置
加了controller的注解,自动被如下扫描:
之前的controller是手动装配实现的
下面是springmvc-servlet.xml
还有web.xml里面配置dispathServlet
这里是绑定文件:
启动起来:
8、编写我们要操作业务Controller ,要么实现Controller接口,要么增加注解;需要返回一个ModelAndView,装数据,封视图;
package com.kuang.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//注意:这里我们先导入Controller接口
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
//ModelAndView 模型和视图
ModelAndView mv = new ModelAndView();
//封装对象,放在ModelAndView中。Model
mv.addObject("msg","HelloSpringMVC!");
//封装要跳转的视图,放在ModelAndView中
mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp
return mv;
}
}
9、将自己的类交给SpringIOC容器,注册bean
原文:https://blog.csdn.net/qq_33369905/article/details/106647319
以上接口返回的就是ModelAndView对象
实现接口创建ModelAndView对象有弊端: 对于每个对象都需要创建一个ModelAndView
-
@controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层 -
@service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理 -
@repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件
. -
@component 把普通pojo实例化到spring容器中)
在自动扫描此类的时候,类名转化为spring bean,即相当中的id。id由类名而来,id遵从:不指定bean的名称,默认为类名首字母小写其它不变,之后赋给id
一旦使用关于Spring的注解出现在类里,例如我在实现类中用到了@Autowired注解,被注解的这个类是从Spring容器中取出来的,那调用的实现类也需要被Spring容器管理,加上@Component
参考:https://blog.csdn.net/qq_42000661/article/details/107413696
controller里面的请求匹配请求映射就需要@RequestMapping(迎合访问地址)
vaule可以直接省略
解释session:当访问服务器否个网页的时候,会在服务器端的内存里开辟一块内存,这块内存就叫做session,而这个内存是跟浏览器关联在一起的。这个浏览器指的是浏览器窗口,或者是浏览器的子窗口,意思就是,只允许当前这个session对应的浏览器访问,就算是在同一个机器上新启的浏览器也是无法访问的。而另外一个浏览器也需要记录session的话,就会再启一个属于自己的session
原文链接:https://blog.csdn.net/weixin_42217767/article/details/92760353
也可以通过ModelAndView实现setViewName
重定向:
默认值不会生成视图解析器
默认值不会生成视图解析器
Mybatis
1、搭建实验数据库
CREATE DATAbase `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(20) NOT NULL, `name` varchar(30) DEFAULT NULL, `pwd` varchar(30) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into `user`(`id`,`name`,`pwd`) values (1,'狂神','123456'),(2,'张三','abcdef'),(3,'李四','987654');
2、导入MyBatis相关 jar 包
GitHub上找
org.mybatis mybatis 3.5.2 mysql mysql-connector-java 5.1.47
3、编写MyBatis核心配置文件
4、编写MyBatis工具类
查看帮助文档
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
5、创建实体类
public class User {
private int id; //id
private String name; //姓名
private String pwd; //密码
//构造,有参,无参
//set/get
//toString()
}
7、编写Mapper.xml配置文件
namespace 十分重要,不能写错!
8、编写测试类
Junit 包测试
9、运行测试,成功的查询出来的我们的数据,ok!
问题说明
可能出现问题说明:Maven静态资源过滤问题
src/main/java ***.xml false src/main/resources ***.xml false
JDBC的参考:https://www.runoob.com/w3cnote/jdbc-use-guide.html



