zoukankan      html  css  js  c++  java
  • 02_入门程序(非注解方式,了解)

    【工程所需jar包】

    【建工程几个注意点】(看红色框)

    【工程截图】

    【编写代码流程】

    1.配置前端控制器:web.xml】

    在web.xml中编写前端控制器。

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns="http://java.sun.com/xml/ns/javaee" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
        id="WebApp_ID" version="2.5">
      <display-name>SpringMVC001</display-name>
      
      <!-- springMVC前端控制器 -->
      <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
        <!-- contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等)-->   
    <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

    [ 注意1 ]

    <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:springmvc.xml</param-value>
    </init-param>

    contextConfigLocation配置springmvc加载的配置文件,

    如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml)

    [ 注意2 ]

     <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>*.action</url-pattern>
      </servlet-mapping>

    对于<url-pattern>,

    第一种: *.action ,  访问以" .action "结尾,由前端控制器DispatcherServlet进行解析

    第二种:   /          ,  所有访问的地址都要由前端控制器DispatcherServlet进行解析,对于静态文件需配置无需DispatcherServlet进行解析。

    第三种:   /*        ,   这种配置方式错误的,使用这种方式配置,最终要转发到一个jsp页面时,仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,导致报错。

    2配置处理器适配器:springmvc.xml】

    在classpath下的springmvc.xml中配置 处理器适配器:

    <!-- 
        处理适配器 注意:所有的处理适配器都实现了HandlerAdapter接口
    --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

    查看源代码

    此处理器适配器能执行实现Controller的Handler:

    Controller接口源码:

    3.开发Handler: ItemsController.java】

    package cn.Higgin.ssm.controller;
    import java.util.ArrayList;
    import java.util.List;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    import cn.Higgin.ssm.po.Items;
    
    public class ItemsComtroller implements Controller{
    
        @Override
        public ModelAndView handleRequest(HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            
            //调用Service查找数据库,查询商品列表,这里使用静态数据模拟
            List<Items> itemsList=new ArrayList<Items>();
            //向list中填充数据
            Items item1=new Items();
            item1.setName("华硕笔记本");
            item1.setPrice(600f);
            item1.setDetail("华硕啦啦啦啦啦啦啦啦啦");
            
            Items item2=new Items();
            item2.setName("联想笔记本");
            item2.setPrice(300f);
            item2.setDetail("联想啦啦啦啦啦啦啦啦啦");
            
            itemsList.add(item1);
            itemsList.add(item2);
            
            //返回ModelAndView
            ModelAndView modelAndView=new ModelAndView();
            //相当于request的setAttribute,在jsp页面中通过itemList来获取
            modelAndView.addObject("itemsList",itemsList);
            //指定视图
            modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
            
            System.out.println("提示:ItemsComtroller.............");
            
            return modelAndView;
        }
    }

    [ 注意 ]

    Handler处理器需要实现Controller接口,才能由springmvc.xml配置的

    <bean  class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />

    中的org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter处理器适配器进行执行。

    4.配置Handler:springmvc.xml】

    将编写的Handler在spring容器中进行加载

    <!--Handler -->
    <bean name="/queryItems.action" class="cn.Higgin.ssm.controller.ItemsComtroller"/>

    5.配置处理器映射器:springmvc.xml】

    在springmvc.xml中配置处理器映射器

    <!-- 
           处理器映射器 
        将bean的name作为url进行查找,需要在配置Handler时指定beanname(即url)
    --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

    6.配置视图解析器:springmvc.xml】

    在springmvc.xml配置解析jsp的视图解析器

    <!-- 
        视图解析器 解析jsp页面,默认使用jstl标签,classpath下面必须有jstl的jar包
    --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>

    【完整springmvc.xml】

    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:mvc
    ="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:tx
    ="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd "> <!-- 配置Handler --> <bean name="/queryItems.action" class="cn.Higgin.ssm.controller.ItemsComtroller"/> <!-- 处理器映射器 将bean的name作为url进行查找,需要在配置Handler时指定beanname(即url)--> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/> <!-- 处理适配器 注意:所有的处理适配器都实现了HandlerAdapter接口--> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!-- 视图解析器 解析jsp页面,默认使用jstl标签,classpath下面必须有jstl的jar包--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/> </beans>

    7.前端页面:itemsList.jsp】

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>查询商品列表</title>
    </head>
    <body> 
    <form action="${pageContext.request.contextPath }/item/queryItem.action" method="post">
    查询条件:
    <table width="100%" border=1>
    <tr>
    <td><input type="submit" value="查询"/></td>
    </tr>
    </table>
    商品列表:
    <table width="100%" border=1>
    <tr>
        <td>商品名称</td>
        <td>商品价格</td>
        <td>生产日期</td>
        <td>商品描述</td>
        <td>操作</td>
    </tr>
    <c:forEach items="${itemsList }" var="item">
    <tr>
        <td>${item.name }</td>
        <td>${item.price }</td>
        <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
        <td>${item.detail }</td>
        
        <td><a href="${pageContext.request.contextPath }/item/editItem.action?id=${item.id}">修改</a></td>
    
    </tr>
    </c:forEach>
    
    </table>
    </form>
    </body>
    
    </html>

    【运行结果】

    访问:http://localhost:8080/SpringMVC001/queryItems.action

    控制台输出,说明执行了ItemsComtroller.java中的代码

    【比较两种页面访问出错的情况对比】

     【错误1】

    故意改错访问地址为:http://localhost:8080/SpringMVC001/queryItems1111111.action

    错误分析:处理器映射器根据url找不到对应的Handler,即url错误。

    【错误2】

    修改ItemsController.java中的指定视图

    改为:

    访问正确的url,出现的错误如下:

    错误分析:处理器映射器根据url找到了Handler,转发的jsp页面找不到,说明jsp页面地址错误了。

  • 相关阅读:
    MyBatisPlus乐观锁
    MyBatisPlus查询
    IDEA创建Java类时自动配置注释(作者,创建时间,版本等)
    MyBatisPlus自动填充处理
    Cannot read property '$createElement' of undefined
    IDEA中gradle的配置和使用
    android7.0以上https抓包
    转发unbuntu jdk 安装
    Unity 连接WebSocket
    Tween 使用
  • 原文地址:https://www.cnblogs.com/HigginCui/p/5857324.html
Copyright © 2011-2022 走看看