Add Frameworks Support
->Web Application
servlet-api
,jsp-api
依赖(其他spring-webmvc等此处省略)
<dependency>
<groupId>javax.servletgroupId>
<artifactId>servlet-apiartifactId>
<version>2.5version>
<scope>providedscope>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jsp-apiartifactId>
<version>2.0version>
<scope>providedscope>
dependency>
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String msg = "hello.";
String action = req.getParameter("action");
if (action.equals("add")) {
msg = "执行了add方法。。。";
}
req.getSession().setAttribute("msg", msg);
req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
<servlet>
<servlet-name>MyServletservlet-name>
<servlet-class>cn.cnyasin.servlet.MyServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>MyServletservlet-name>
<url-pattern>/servleturl-pattern>
servlet-mapping>
<servlet>
<servlet-name>app1servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:app1-servlet.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>app1servlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
">
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
bean>
<bean name="/hello" class="cn.cnyasin.controller.HelloController"/>
beans>
/WEB-INF/jsp/
package cn.cnyasin.controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloController implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView view = new ModelAndView();
view.addObject("msg", "hello.");
view.setViewName("hello");
return view;
}
}
/WEB-INF/jsp/hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
hello
${msg}
Project Structure -> Artifacts -> 你的module -> WEB-INF -> lib
<servlet>
<servlet-name>app1servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:app1-servlet.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>app1servlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="cn.cnyasin"/>
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
bean>
beans>
/WEB-INF/jsp/
package cn.cnyasin.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class AnnotationController {
@RequestMapping("/annotation")
public String annotation(Model model){
model.addAttribute("msg", "annotation...");
return "annotation"; // return 视图文件名
}
}
/WEB-INF/jsp/annotation.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
annotation
${msg}
Project Structure -> Artifacts -> 你的module -> WEB-INF -> lib
package cn.cnyasin.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@Controller
public class RestfulController {
/* 方式一 */
@RequestMapping("/rest/test/{a}/{b}")
/* 方式二 */
// @RequestMapping(path = "/rest/test/{a}/{b}", method = RequestMethod.GET)
/* 方式三 */
// @RequestMapping(value = "/rest/test/{a}/{b}", method = RequestMethod.GET)
/* 方式四 */
// @GetMapping("/rest/test/{a}/{b}")
// @PostMapping("/rest/test/{a}/{b}")
public String test(@PathVariable int a, @PathVariable int b, Model model) {
int sum = a + b;
model.addAttribute("msg", sum);
return "restful";
}
}
return "redirect:/foo/bar";
// @PostMapping("/rest/test/{a}/{b}")
public String test(@PathVariable int a, @PathVariable int b, Model model) {
int sum = a + b;
model.addAttribute("msg", sum);
//return "redirect:/index.jsp";
return "redirect:/rest/test2";
}
@GetMapping("/rest/test2")
public String test2(Model model) {
model.addAttribute("msg", "redirect ok...");
return "restful";
}
package cn.cnyasin.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class EncodingController {
@RequestMapping("/encoding/test1")
public String test1(@RequestParam("data") String data, Model model) {
model.addAttribute("msg", data);
return "encoding";
}
}
package cn.cnyasin.utils;
import javax.servlet.*;
import java.io.IOException;
public class MyFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
chain.doFilter(request, response);
}
public void destroy() {}
}
<filter>
<filter-name>MyFilterfilter-name>
<filter-class>cn.cnyasin.utils.MyFilterfilter-class>
filter>
<filter-mapping>
<filter-name>MyFilterfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
<filter>
<filter-name>encodingfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>utf-8param-value>
init-param>
filter>
<filter-mapping>
<filter-name>encodingfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
@RestController
public class JsonController {
@RequestMapping("/json/test1")
public String test1(){
return "test1";
}
}
@Controller
public class JsonController {
@RequestMapping("/json/test1")
@ResponseBody
public String test1(){
return "test1";
}
}
@RequestMapping(value = "/json/test1", produces = "application/json;charset=utf-8")
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
<bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false"/>
bean>
property>
bean>
mvc:message-converters>
mvc:annotation-driven>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.12.5version>
dependency>
@RestController
public class JsonController {
// @RequestMapping(value = "/json/test1", produces = "application/json;charset=utf-8")
@RequestMapping(value = "/json/test1")
public String test1() throws JsonProcessingException {
HashMap user = new HashMap();
user.put("id", 123);
user.put("name", "张三");
user.put("age", 12);
List userList = new ArrayList();
userList.add(user);
HashMap data = new HashMap();
data.put("total", 10);
data.put("userList", userList);
ObjectMapper objectMapper = new ObjectMapper();
String jsonStr = objectMapper.writeValueAsString(data);
return jsonStr;
}
}
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.76version>
dependency>
package cn.cnyasin.pojo;
public class Book {
private int id;
private String name;
private int status;
private long createdAt;
// getter,setter...
}
package cn.cnyasin.dao;
import cn.cnyasin.pojo.Book;
import java.util.List;
public interface BookMapper {
// 增加
int insertOne(Book book);
// 修改
int updateOne(Book book);
// 删除
int deleteOne(int id);
// 一个
Book getOne(int id);
// 所有
List<Book> getAll();
}
DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.cnyasin.dao.BookMapper">
<insert id="insertOne" parameterType="book">
insert into book (`name`, `status`, `created_at`)
values (#{name}, #{status}, #{createdAt})
insert>
<update id="updateOne" parameterType="book">
update book set `name` = #{name} where id = #{id}
update>
<delete id="deleteOne" parameterType="int">
delete from book where id = #{id}
delete>
<select id="getOne" resultType="book">
select * from book where id = #{id}
select>
<select id="getAll" resultMap="bookList">
select * from book
select>
<resultMap id="bookList" type="book">
<result property="createdAt" column="created_at"/>
resultMap>
mapper>
package cn.cnyasin.service;
import cn.cnyasin.pojo.Book;
import java.util.List;
public interface BookService {
// 增加
int insertOne(Book book);
// 修改
int updateOne(Book book);
// 删除
int deleteOne(int id);
// 一个
Book getOne(int id);
// 所有
List<Book> getAll();
// 事务测试:插入&删除&查全部
List<Book> insertDeleteGetAll(Book book);
}
package cn.cnyasin.service;
import cn.cnyasin.dao.BookMapper;
import cn.cnyasin.pojo.Book;
import java.util.List;
public class BookServiceImpl implements BookService {
private BookMapper bookMapper;
public void setBookMapper(BookMapper bookMapper) {
this.bookMapper = bookMapper;
}
public int insertOne(Book book) {
return bookMapper.insertOne(book);
}
public int updateOne(Book book) {
return bookMapper.updateOne(book);
}
public int deleteOne(int id) {
return bookMapper.deleteOne(id);
}
public Book getOne(int id) {
return bookMapper.getOne(id);
}
public List<Book> getAll() {
return bookMapper.getAll();
}
public List<Book> insertDeleteGetAll(Book book) {
bookMapper.insertOne(book);
int i = 10 / 0;
bookMapper.deleteOne(15);
return bookMapper.getAll();
}
}
package cn.cnyasin.controller;
import cn.cnyasin.pojo.Book;
import cn.cnyasin.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller
public class BookController {
@Autowired
@Qualifier("bookServiceImpl")
private BookService bookService;
@RequestMapping("/book/list")
public String getAllBook(Model model) {
List<Book> list = bookService.getAll();
model.addAttribute("list", list);
return "bookList";
}
@RequestMapping("/book/insert")
public String insertDeleteGetAll(Model model) {
Book book = new Book();
book.setName("哈喽啊");
book.setStatus(1);
book.setCreatedAt(new Date().getTime() / 1000);
bookService.insertDeleteGetAll(book);
return "redirect:/book/list";
}
}
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
bookList
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
bookList
书籍列表
编号
名字
状态
时间
${book.id}
${book.name}
${book.status}
${book.createdAt}
<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>springmvcservlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
<init-param>
<param-name>contextConfigLocationparam-name>
<param-value>classpath:applicationContext.xmlparam-value>
init-param>
<load-on-startup>1load-on-startup>
servlet>
<servlet-mapping>
<servlet-name>springmvcservlet-name>
<url-pattern>/url-pattern>
servlet-mapping>
<filter>
<filter-name>encodingfilter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
<init-param>
<param-name>encodingparam-name>
<param-value>utf-8param-value>
init-param>
filter>
<filter-mapping>
<filter-name>encodingfilter-name>
<url-pattern>/*url-pattern>
filter-mapping>
web-app>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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.xsd
http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="cn.cnyasin.controller"/>
<mvc:default-servlet-handler/>
<mvc:annotation-driven/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="cn.cnyasin.interceptor.TokenInterceptor"/>
mvc:interceptor>
mvc:interceptors>
beans>
package cn.cnyasin.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@RequestMapping("/test/test1")
public String test1() {
return "{json}";
}
}
package cn.cnyasin.interceptor;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TokenInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getParameter("token");
System.out.println(token);
if (null == token || !token.equals("token")) {
request.getRequestDispatcher("/").forward(request, response);
}
return true;
}
}