SSM学习

参考: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中配置的就是

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>com.kuang.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/user</url-pattern>
    </servlet-mapping>
</web-app>

springMVC的原理

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

<!--Handler-->
<bean id="/hello" class="com.kuang.controller.HelloController"/>

原文: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上找

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>

3、编写MyBatis核心配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/kuang/dao/userMapper.xml"/>
    </mappers>
</configuration>

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 十分重要,不能写错!

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.kuang.dao.UserMapper">
  <select id="selectUser" resultType="com.kuang.pojo.User">
    select * from user
  </select>
</mapper>

8、编写测试类

Junit 包测试

9、运行测试,成功的查询出来的我们的数据,ok!

问题说明

可能出现问题说明:Maven静态资源过滤问题

<resources>
    <resource>
        <directory>src/main/java</directory>
        <includes>
            <include>**/*.properties</include>
            <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
            <include>**/*.properties</include>
            <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
    </resource>
</resources>

JDBC的参考:https://www.runoob.com/w3cnote/jdbc-use-guide.html

ssm 学习信息管理课程作业文档是学习和掌握SSM框架和信息管理的重要工具。该文档通常包含以下内容: 1. 系统需求分析:对于一个信息管理系统而言,首先需要对系统的需求进行分析,明确系统应该具备的功能和特性。这部分内容一般包括用户需求调研、可行性分析以及系统功能规划等。 2. 数据库设计:信息管理系统离不开数据库的支持,因此需要进行数据库设计,包括数据库表的设计、字段的定义以及表之间的关系等。同时,还需要考虑数据的安全性和完整性等方面的问题。 3. 系统架构设计:SSM框架是SpringSpring MVC和MyBatis的整合,因此在文档中需要对系统的架构进行设计,明确各个模块的职责和交互方式。同时,还需要考虑系统的扩展性和灵活性等方面的问题。 4. 功能模块设计:根据系统需求,将系统的功能进行模块化设计,明确每个模块的功能和实现方式。这部分内容可以使用UML图、流程图等工具进行展示,帮助读者理解系统的结构和功能。 5. 界面设计:信息管理系统的界面设计直接影响用户的使用体验,因此需要设计直观、美观且易于操作的界面。文档中可以包含系统界面截图、交互流程等内容,以帮助读者了解系统的外观和交互方式。 6. 功能实现:在文档中可以介绍系统各个功能模块的实现方式,包括代码实现、配置文件的设置等。同时,还可以对关键的代码进行解释和说明,帮助读者理解系统的实现原理。 7. 系统测试与部署:对于一个信息管理系统而言,测试和部署是不可或缺的环节。在文档中可以介绍系统测试的目的和方法,并给出测试用例和测试结果。同时,还可以介绍系统的部署方式,帮助读者将系统部署到服务器上。 通过编写SSM学习信息管理课程作业文档,可以帮助学生深入理解SSM框架和信息管理的知识,提高系统设计和开发的能力。该文档可以作为学习笔记和参考资料,方便学生在以后的学习和工作中查阅和复习,对于提升学习效果和实践能力都具有积极的促进作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值