发表于: 2017-08-03 22:28:19

4 1154


今天做的事:

做小课堂PPT;整合任务一代码,完成任务二。

使用springMVC整合任务一代码,并实现服务,实现RESTful风格接口

另外springMVC的配置文件也做了一些了解

项目结构

关键代码如下

springMVC-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:p="http://www.springframework.org/schema/p"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:mvc="http://www.springframework.org/schema/mvc"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans-4.1.xsd
     http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context-4.1.xsd
     http://www.springframework.org/schema/mvc
     http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">

   <!--开启注解-->
   <context:annotation-config></context:annotation-config>


   <!--自动扫描包-->
   <context:component-scan base-package="com.jnshu.controller"></context:component-scan>



   <!-- 3.配置jsp 显示ViewResolver ,根据前后缀获取view物理文件路径-->
       <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix">
           <value>/WEB-INF/pages/</value>
       </property>
       <property name="suffix">
           <value>.jsp</value>
       </property>
   </bean>

</beans>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app metadata-complete="true" version="3.1"
        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_3_1.xsd">

 <!--过滤器,解决浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持的问题-->
 <filter>
   <filter-name>HiddenHttpMethodFilter</filter-name>
   <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
 </filter>
 <filter-mapping>
   <filter-name>HiddenHttpMethodFilter</filter-name>
   <url-pattern>/*</url-pattern>
 </filter-mapping>

 <!--相关配置文件-->
 <context-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>WEB-INF/applicationContext-service.xml</param-value>
 </context-param>

 <!--监听器-->
 <listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>

 <!--DispatcherServlet是前置控制器,-->
 <!--拦截匹配的请求,Servlet拦截匹配规则要自己定义,-->
 <!--把拦截下来的请求,依据相应的规则分发到目标Controller来处理,-->
 <!--是配置springMVC的第一步。-->
 <servlet>
   <servlet-name>springMVC</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <init-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>
       WEB-INF/springMVC-servlet.xml
</param-value>
   </init-param>
   <load-on-startup>1</load-on-startup>
 </servlet>


 <servlet-mapping>
   <servlet-name>springMVC</servlet-name>
   <!-- 默认匹配所有的请求 -->
   <url-pattern>/</url-pattern>
 </servlet-mapping>


</web-app>


然后是service层代码

StudentService.java

package com.jnshu.service;


import com.jnshu.entitiy.Student;

import java.util.List;

/**
* Created by Administrator on 2017/08/03.
*/
public interface StudentService {

public List<Student> getAll();

   public void insert(Student student);

   public void delete(int id);

   public Student selectById(int id);

   public List<Student> selectByName(String name);

   public void update(Student student,Integer id);

}


StudentServiceImpl.java

package com.jnshu.service;

import com.jnshu.dao.StudentJDBCDAO;
import com.jnshu.entitiy.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Iterator;
import java.util.List;

/**
* Created by Administrator on 2017/08/03.
*/
@Service
public class StudentServiceImpl implements StudentService{

@Autowired
   private StudentJDBCDAO studentJDBCDAO;



   public List<Student> getAll(){

List<Student> students = studentJDBCDAO.getAll();

      Iterator iterator = students.iterator();
      while(iterator.hasNext()){
System.out.println(iterator.next());
      }
return students;
   }

public void insert(Student student){
Integer integer = studentJDBCDAO.insertStudent(student);

       if(integer>0){
System.out.println("插入成功");
       }

}

public void delete(int id){
Integer integer = studentJDBCDAO.deleteStudent(id);

       if(integer>0){
System.out.println("删除成功");
       }

}

public Student selectById(int id){
Student student = studentJDBCDAO.selectStudent(id);

       System.out.println(student);

       return student;

   }

public List<Student> selectByName(String name){
List<Student> students = studentJDBCDAO.getStudentListByName(name);

       Iterator iterator = students.iterator();

       while(iterator.hasNext()){
System.out.println(iterator.next());
       }

return students;

   }

public void update(Student student,Integer id){
Integer integer = studentJDBCDAO.updateStudent(student,id);

       if(integer>0){
System.out.println("更新成功");
       }

}

}


最后的是控制层

RestController.java

package com.jnshu.controller;

import com.jnshu.entitiy.Student;
import com.jnshu.service.StudentService;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import java.util.List;
import java.util.Map;


/**
* Created by Administrator on 2017/07/25.
*/
@Controller
public class RestController {

private static Logger logger = Logger.getLogger(RestController.class);
   @Autowired
   private StudentService studentService;


   //获取列表
   @RequestMapping(value = "/stus",method = RequestMethod.GET)
public String getAll(Model model){
List<Student> students = studentService.getAll();

//        logger.info(studentService.getAll());
       model.addAttribute("students",students);
       return "list";
   }



//插入信息
   //获取插入界面
   @RequestMapping(value = "/addStu",method = RequestMethod.GET)
public String input(Map<String,Object> map){
map.put("student",new Student());

       return "input";
   }
//返回列表查看更新数据
   @RequestMapping(value = "/addStu",method = RequestMethod.POST)
public String insert(Student student){
studentService.insert(student);
       return "redirect:stus";
   }


//由ID删除数据
   @RequestMapping(value = "/delStu/{id}",method = RequestMethod.DELETE)
public String delete(@PathVariable("id") Integer id){
studentService.delete(id);
       return "redirect:stus";

   }


//由ID查找数据
   @RequestMapping(value = "/seeStu/{id}",method = RequestMethod.GET)
public String selectById(@PathVariable("id") Integer id,Model model){
Student student = studentService.selectById(id);
       model.addAttribute("student",student);
       return "detail";
   }


//由姓名查找数据
   @RequestMapping(value = "/seeStu2/{name}",method = RequestMethod.GET)
public String selectByName(@PathVariable("name") String name,Model model){
List<Student> students = studentService.selectByName(name);
       model.addAttribute("students",students);

       return "list";
   }


//获取更新列表
   @RequestMapping(value = "/updStu/{id}",method = RequestMethod.GET)
public String in(@PathVariable("id") Integer id,Model model){
Student student = studentService.selectById(id);

       model.addAttribute("student",student);
       return "in";

   }

//更新数据
   @RequestMapping(value = "/updStu/{id}",method = RequestMethod.PUT)
public String update(Student student,@PathVariable("id") Integer id){
studentService.update(student,id);
       return "redirect:stus";
   }

}


前端页面

list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page isELIgnored="false" %>
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <title>All Student</title>
</head>

<body>
<h2>学生信息表</h2>

<table border="1">

   <tr>
       <td>ID</td>
       <td>姓名</td>
       <td>QQ</td>
       <td>类型</td>
       <td>时间</td>
       <td>学校</td>
       <td>学号</td>
       <td>链接</td>
       <td>宣言</td>
       <td>辅导师兄</td>
       <td>引荐师兄</td>
       <td>何处知晓</td>
       <td>创建时间</td>
       <td>更新时间</td>

   </tr>

   <c:forEach items="${students}" var="stu">
<tr>

           <td>${stu.SName}</td>
           <td>${stu.QQ}</td>
           <td>${stu.style}</td>
           <td>${stu.time}</td>
           <td>${stu.school}</td>
           <td>${stu.SNumber}</td>
           <td>${stu.link}</td>
           <td>${stu.dream}</td>
           <td>${stu.FBro}</td>
           <td>${stu.YBro}</td>
           <td>${stu.whereKnow}</td>
           <td>${stu.ID}</td>
           <td>${stu.create_at}</td>
           <td>${stu.update_at}</td>
       </tr>
   </c:forEach>
</table>
</body>
</html>


detail.jsp

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page isELIgnored="false" %>
<html>
<head>
   <title>List</title>
</head>

<body>
<h2>学生信息</h2>
<hr>

   ID:${student.ID}<br/>
   姓名:${student.SName}<br/>
   QQ:${student.QQ}<br/>
   类型:${student.style}<br/>
   时间:${student.time}<br/>
   学校:${student.school}<br/>
   学号:${student.SNumber}<br/>
   链接:${student.link}<br/>
   宣言:${student.dream}<br/>
   辅导师兄:${student.FBro}<br/>
   引荐师兄:${student.YBro}<br/>
   何处知晓:${student.whereKnow}<br/>
   创建时间:${student.create_at}<br/>
   更新时间:${student.update_at}<br/>


<hr>
</body>

</html>


input.jsp

<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>Insert Student</title>
</head>
<body>

<h2>新增学生信息</h2>
<hr>

<form:form action="/addStu" method="post" modelAttribute="student">


姓名:<form:input path="SName"/><br/>
   QQ:<form:input path="QQ"/><br/>
   类型:<form:input path="style"/><br/>
   时间:<form:input path="time"/><br/>
   学校:<form:input path="school"/><br/>
   学号:<form:input path="SNumber"/><br/>
   链接:<form:input path="link"/><br/>
   宣言:<form:input path="dream"/><br/>
   辅导师兄:<form:input path="FBro"/><br/>
   引荐师兄:<form:input path="YBro"/><br/>
   何处知晓:<form:input path="whereKnow"/><br/>
   创建时间:<form:input path="create_at"/><br/>
   <input type="submit" value="提交">


</form:form>
<hr>

</body>
</html>


in.jsp

<%@ page language="java" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@page isELIgnored="false" %>
<html>
<head>
   <title>List</title>
</head>

<body>
<h2>学生信息</h2>
<hr>
<form:form action="/updStu/${student.ID}" method="post" modelAttribute="student">
<input hidden name="_method" value="PUT">
ID:${student.ID}<br/>
<br/>
姓名:${student.SName}<br/>
姓名:<form:input path="SName"/><br/>
QQ:${student.QQ}<br/>
QQ:<form:input path="QQ"/><br/>
类型:${student.style}<br/>
类型:<form:input path="style"/><br/>
时间:${student.time}<br/>
   时间:<form:input path="time"/><br/>
学校:${student.school}<br/>
   学校:<form:input path="school"/><br/>
学号:${student.SNumber}<br/>
   学号:<form:input path="SNumber"/><br/>
链接:${student.link}<br/>
   链接:<form:input path="link"/><br/>
宣言:${student.dream}<br/>
   宣言:<form:input path="dream"/><br/>
辅导师兄:${student.FBro}<br/>
   辅导师兄:<form:input path="FBro"/><br/>
引荐师兄:${student.YBro}<br/>
   引荐师兄:<form:input path="YBro"/><br/>
何处知晓:${student.whereKnow}<br/>
   何处知晓:<form:input path="whereKnow"/><br/>
创建时间:${student.create_at}<br/>
更新时间:${student.update_at}<br/>
   更新时间:<form:input path="update_at"/><br/>
   <input type="submit" value="提交">

</form:form>
<hr>
</body>

</html>


用postman测过接口,控制台打印全部通过,postman测试页面通过一些,但还是有一点bug,应该是jetty启动服务时无法解决中文乱码的问题。明天再看一下


学习Iterator迭代器的用法;不过只是简单实用,用着感觉和加强版for循环用处差不多,只不过更加隐蔽了,不会让调用者直接接触到数据。

Iterator iterator = students.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}


而加强版for要这么写

for(Student student:students){
System.out.println(student);
}



明天计划:上传任务;整理一下任务二的知识点;更新一下博客;看一下任务三要求


问题:目前jetty启动服务还有测试时中文乱码问题未解决


收获:jsp页面的编写,一些el表达式,c标签啥的;Iterator迭代器;springMVC的配置文件又做了一些了解;对REST接口又多了一点认识。


返回列表 返回列表
评论

    分享到