发表于: 2017-08-03 22:28:19
4 1152
今天做的事:
做小课堂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接口又多了一点认识。
评论