日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring MVC 基础

發布時間:2025/7/14 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring MVC 基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Spring MVC 項目案件見附件

導包

配置web.xml啟動Spring MVC
<?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"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
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>Spring3MVC</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>

創建一個以web.xml配置的springMVC servlet名稱的文件如:spring-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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">


<context:component-scan
base-package="com.springmvc.controller" />

<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>

rest風格傳參,注入@RequestParam的參數,參數就是地址的一部分,是必需的,如果沒有就找404
@RequestMapping({"/hi","/"})
public String hello(@RequestParam("userName") String userName){
System.out.println(userName);
return "hi";
}

1.使用Map
把數據帶回view
@RequestMapping({ "/hi", "/" })
public String hello(@RequestParam("userName") String userName,
Map<String, Object> context) {
System.out.println(userName);
context.put("userName", userName);
return "hi";
}
2.使用Model
@RequestMapping({ "/hi", "/" })
public String hello(String userName,
Model model) {
System.out.println(userName);
model.addAttribute("userName", userName);
return "hi";
}
<body>
hello ${userName}
</body>

?

實例一個user到創建頁面

方式1
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add(Model model) {
model.addAttribute(new User());
return "user/add";
}
方式2
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add(@ModelAttribute("user") User user) {
return "user/add";
}

//服務器端驗證,可以使用JSR 303 - Bean Validation
1.在bean類里需要驗證的字段,使用相應的注解
public class User {
private String userName;
private String password;
private String nikeName;
private String email;

public User(){}
public User(String userName, String password, String nikeName, String email) {
this.userName = userName;
this.password = password;
this.nikeName = nikeName;
this.email = email;
}

@NotBlank(message="用戶不能為空")
public String getUserName() {
return userName;
}

2.controller難度的參數加@Validated注解,后面一定要跟著BindingResult
@RequestMapping(value = "/{userName}/update", method = RequestMethod.POST)
public String update(@PathVariable String userName, @Validated User user,
BindingResult br) {
if (br.hasErrors()) {
return "user/update";
}
users.put(userName, user);
return "redirect:/user/users";
}
3.spring-servlet.xml
啟用MVC注解<mvc:annotation-driven />

異常處理,可以使用局部處理,還有全局處理異常

public class UserException extends RuntimeException {
...
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String login(String userName, String password, HttpSession session) {
if (!users.containsKey(userName)) {
throw new UserException("用戶名不存在!");
}
User u = users.get(userName);
if (!u.getPassword().equals(password)) {
throw new UserException("用戶密碼不正確!");
}
session.setAttribute("loginUser", u);
return "redirect:/user/users";
}

1.局部異常處理
/**
* 局部異常處理
*/
// @ExceptionHandler(value={UserException.class})
// public String handlerException(UserException e,HttpServletRequest req){
// req.setAttribute("e", e);
// return "error";
// }

2.全局異常處理
<!-- 全局異常處理 -->
<bean
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="com.springmvc.model.UserException">error</prop>
</props>
</property>
</bean>

單文件上傳
<body>
<sf:form method="post" modelAttribute="user" enctype="multipart/form-data">
userName:<sf:input path="userName"/><sf:errors path="userName"/><br />
password:<sf:input path="password"/><sf:errors path="password"/><br />
nikeName:<sf:input path="nikeName"/><br />
email:<sf:input path="email"/><br />
attach:<input type="file" name="attach" />
<input type="submit" value="提交" />
</sf:form>
</body>

spring-servlet.xml
<!-- 設置MultipartResolver才能完成上傳文件 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="5000000"></property>
</bean>

controller
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Validated User user, BindingResult br,
MultipartFile attach, HttpServletRequest req) throws IOException {
if (br.hasErrors()) {
return "user/add";
}
String path = req.getSession().getServletContext()
.getRealPath("/resources/upload");
File file = new File(path + "/" + attach.getOriginalFilename());
FileUtils.copyInputStreamToFile(attach.getInputStream(), file);

System.out.println(path);
//
// System.out.println(attach.getName() + ","
// + attach.getOriginalFilename() + "," + attach.getContentType());
users.put(user.getUserName(), user);
return "redirect:/user/users";
}

多文件上傳
attach:<input type="file" name="attachs" />
attach:<input type="file" name="attachs" />
attach:<input type="file" name="attachs" />
attach:<input type="file" name="attachs" />

@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@Validated User user, BindingResult br,
@RequestParam("attachs") MultipartFile[] attachs,
HttpServletRequest req) throws IOException {
if (br.hasErrors()) {
return "user/add";
}
String path = req.getSession().getServletContext()
.getRealPath("/resources/upload");
for (MultipartFile attach : attachs) {
if(attach.isEmpty()) continue;
File file = new File(path + "/" + attach.getOriginalFilename());
FileUtils.copyInputStreamToFile(attach.getInputStream(), file);
}

System.out.println(path);
//
// System.out.println(attach.getName() + ","
// + attach.getOriginalFilename() + "," + attach.getContentType());
users.put(user.getUserName(), user);
return "redirect:/user/users";
}


返回json數據 :http://localhost:8080/SpringMVC/user/sdy?json

@RequestMapping(value = "/{userName}", method = RequestMethod.GET,params="json")
@ResponseBody
public User show(@PathVariable String userName) {
return users.get(userName);
}

轉載于:https://www.cnblogs.com/Donie/p/4011552.html

總結

以上是生活随笔為你收集整理的Spring MVC 基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩中文av在线 | 久久婷婷综合国产 | 成人免费aaa| 视频在线观看一区二区 | 午夜在线一区二区 | 国产亚洲欧美日韩高清 | 解开乳罩喂领导吃奶 | 夜晚福利视频 | 99国产精品国产精品九九 | 男生插女生视频在线观看 | 国产精品入口久久 | 中文字幕一区视频 | 色88久久久久高潮综合影院 | av一卡二卡| 麻豆av一区二区三区在线观看 | 激情毛片视频 | 日本午夜精华 | 国产精品美女久久久久久久久 | 亚洲视频第一页 | 四虎永久在线精品免费网址 | 欧美亚洲一区二区三区四区 | 国产乱码精品一区二区三 | 国产成人无码一区二区在线观看 | 欧美日韩一区二区三区在线播放 | 久精品在线 | 三级黄毛片 | 日韩av中文字幕在线播放 | 黄色片在线免费观看 | 国产成人精品一区二区在线观看 | 丝袜美腿av在线 | 免费一级毛片麻豆精品 | 久久福利视频网 | 日日射日日操 | 古代玷污糟蹋np高辣h文 | 五月婷婷中文字幕 | 亚洲精品无码成人 | a级黄色影院 | 国产成人无遮挡在线视频 | 亚洲欧洲日韩在线 | а√在线中文网新版地址在线 | 爆操女秘书 | 九九99久久 | 欧美中文字幕在线播放 | 日本www色视频 | av免费看片 | 久久国产网站 | 国产美女裸体无遮挡免费视频 | 亚洲小说图片区 | 色干干| 在线看黄色网址 | 日本精品在线观看 | 午夜福利啪啪片 | 天堂中文字幕在线观看 | 国产porn| 欧美jizz19性欧美 | 91亚洲精品久久久蜜桃网站 | 国产妇女馒头高清泬20p多 | 久久综合综合久久 | 亚洲人成无码网站久久99热国产 | 日本一区二区视频在线观看 | 欧美v日韩 | 国产特黄aaaaa毛片 | 图片区视频区小说区 | 日韩一级片在线播放 | 色哟哟网站在线观看 | 潘金莲裸体一级淫片视频 | 91麻豆产精品久久久久久 | 国产毛片久久久久久久 | a天堂视频 | av免费在线网站 | 国产在线播放网站 | 天天干天天操天天摸 | 日韩欧美精品 | 欧美人与动牲交xxxxbbbb | 在线观看高清视频 | 18成人免费观看网站 | 人妻熟人中文字幕一区二区 | 国产精品图片 | 日本激情影院 | 亚洲青草 | 成人免费淫片aa视频免费 | 女人又爽又黄免费女仆 | 91麻豆精品一二三区在线 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 黑人干亚洲 | 欧美黄视频 | 久久国产视频网 | 国产av一区二区三区传媒 | 鬼灭之刃柱训练篇在线观看 | 欧美日韩中文字幕在线 | 尤物精品视频在线观看 | 中文字幕 自拍偷拍 | 成人手机在线播放 | 波多野结衣中文字幕在线播放 | 黄色免费国产 | 校园sm主奴调教1v1罚视频 | 岛国精品 | 亚洲精品2区 | 午夜精品在线视频 |