jsp 页面"无任何操作jsp 权限管理"这个怎么去掉

博客分类:
上一篇文章介绍了Spring MVC如何处理静态资源文件,本文讲解如何使用Spring MVC做文件上传,附带深入一下Spring MVC的ModelAndView。增加一个Controller,叫FileUploadController:
package org.springframework.samples.mvc.
import org.springframework.stereotype.C
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
@Controller
@RequestMapping("/fileupload")
public class FileUploadController {
@RequestMapping(method=RequestMethod.GET)
public void fileUploadForm() {
这个类和HelloWorld中的Controller类就有点差别了,首先类名上加入了@RequestMapping注解,这样在做HandlerMapping时,SpringMVC会将类名和方法名的@RequestMapping连接起来,而本例方法名前并没有具体路径(当然也可以写),因此最终映射的URL还是"/fileupload",另外一点就是在方法级@RequestMapping的注解增加了一个RequestMothod.GET,意思是只有以GET方式提交的"/fileupload"URL请求才会进入fileUploadForm()方法,其实根据HTTP协议,HTTP支持一系列提交方法(GET,POST,PUT,DELETE),同一个URL都可以使用这几种提交方式,事实上SpringMVC正是通过将同一个URL的不同提交方法对应到不同的方法上达到RESTful。
访问,后台报错:
19:12:44.557:WARN::/web/fileupload
javax.servlet.ServletException: Circular view path [fileupload]: would dispatch back to the current handler URL [/web/fileupload] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
at org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:292)
正如Hint中指出的,没有指定一个View,大家可能会有疑问,HelloWorld中不是可以将结果返回到浏览器么?注意HelloWorld中的@ResponseBody跟View没有任何关系,HelloWorld中其实也是返回了一个ModelAndView,但这个View为null,并且在返回前,已经将结果通过HttpServletResponse发送给浏览器了。那么怎么指定一个View呢?通常我们会想到一个默认的View,即如果没有写特殊的View,所有的结果都将转到这个默认的View上,最后将这个View推到浏览器展示。在servlet-context.xml中增加一个配置:
&!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --&
&beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&beans:property name="prefix" value="/WEB-INF/views/" /&
&beans:property name="suffix" value=".jsp" /&
&/beans:bean&
配置了一个Bean,对应的类为InternalResourceViewResolver,并设置了prefix属性为"/WEB-INF/views",suffix属性为".jsp",这个类为视图解析器(view resolver),支持InternalResourceView(比如Servlet和JSP)及其子类如JstlView,默认的是InternalResourceView,如果有JSTL API存在的话,就是JstlView。
现在有一个默认的View了,这个View将view名字解析到/WEB-INF/views/目录下对应的jsp文件。哪里有view名字?当带有@RequestMapping的方法返回void时,@RequestMapping映射的URL路径即view名字。
所以当使用GET方式访问时,最终会找WEB-INF/views/目录下有没有fileupload.jsp文件,有则将此jsp文件显示在浏览器上,没有则报如下错误:
ERROR: PWC6117: File &/Users/stephansun/Documents/workspace/samples/samples-web/src/main/webapp/WEB-INF/views/fileupload.jsp& not found
fileUploadForm.jsp文件为:
&%@ taglib uri="/jsp/jstl/core" prefix="c" %&
&title&fileupload | mvc-showcase&/title&
&link href="&c:url value="/resources/form.css" /&" rel="stylesheet"
type="text/css" /&
&script type="text/javascript" src="&c:url value="/resources/jquery/1.6/jquery.js" /&"&&/script&
&script type="text/javascript" src="&c:url value="/resources/jqueryform/2.8/jquery.form.js" /&"&&/script&
&div id="fileuploadContent"&
&h2&File Upload&/h2&
See the &code&org.springframework.samples.mvc.fileupload&/code& package for the @Controller code
&form id="fileuploadForm" action="fileupload" method="POST" enctype="multipart/form-data" class="cleanform"&
&div class="header"&
&h2&Form&/h2&
&c:if test="${not empty message}"&
&div id="message" class="success"&${message}&/div&
&label for="file"&File&/label&
&input id="file" type="file" name="file" /&
&p&&button type="submit"&Upload&/button&&/p&
上传页面正确显示后,我们需要一个方法处理上传请求,processUpload,现在FileUploadController看起来是这样的:
package org.springframework.samples.mvc.
import java.io.IOE
import org.springframework.stereotype.C
import org.springframework.ui.M
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestM
import org.springframework.web.bind.annotation.RequestP
import org.springframework.web.multipart.MultipartF
@Controller
@RequestMapping("/fileupload")
public class FileUploadController {
@RequestMapping(method=RequestMethod.GET)
public void fileUploadForm() {
@RequestMapping(method=RequestMethod.POST)
public void processUpload(@RequestParam MultipartFile file, Model model) throws IOException {
model.addAttribute("message", "File '" + file.getOriginalFilename() + "' uploaded successfully");
这里出现了一个新注解@RequestParam,先看一下JSP页面的代码片段:
&input id="file" type="file" name="file" /&
input框提交的参数名就是file,@RequestParam注解自动将POST提交的参数中名为file的封装到一个MultipartFile类中,一切都在开发人员眼皮底下做好了,大大减少了开发人员的代码量。现在我们在上传页面选择一个文件上传,后台报错,看报错日志:
java.lang.IllegalArgumentException: Expected MultipartHttpServletRequest: is a MultipartResolver configured?
at org.springframework.util.Assert.notNull(Assert.java:112)
说"是不是没配置MultipartResolver?",恩,还没有配,所有在servlet-context.xml中加上这么一段配置:
&!-- Only needed because we require fileupload in the org.springframework.samples.mvc.fileupload package --&
&beans:bean id="multipartResolver" class="org.springframework.monsMultipartResolver" /&
这个Bean也是一个视图解析器(view resolver)。
完整的XML:
&?xml version="1.0" encoding="UTF-8"?&
&beans:beans xmlns="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"&
&!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --&
&!-- Handles HTTP GET requests for /resources/** by efficiently serving up static resources in the ${webappRoot}/resources/ directory --&
&resources mapping="/resources/**" location="/resources/" /&
&!-- Imports user-defined @Controller beans that process client requests --&
&beans:import resource="controllers.xml" /&
&!-- You have to add this because you had a &resources/& declare --&
&mvc:annotation-driven/&
&!-- Resolves views selected for rendering by @Controllers to .jsp resources in the /WEB-INF/views directory --&
&beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&
&beans:property name="prefix" value="/WEB-INF/views/" /&
&beans:property name="suffix" value=".jsp" /&
&/beans:bean&
&!-- Only needed because we require fileupload in the org.springframework.samples.mvc.fileupload package --&
&beans:bean id="multipartResolver" class="org.springframework.monsMultipartResolver" /&
&/beans:beans&
然后再次上传文件,页面显示:
File 'a.js' uploaded successfully
上传成功,最后我们分析一下FileUploadController中的processUpload方法:
@RequestMapping(method=RequestMethod.POST)
public void processUpload(@RequestParam MultipartFile file, Model model) throws IOException {
model.addAttribute("message", "File '" + file.getOriginalFilename() + "' uploaded successfully");
Model就是MVC模式中的M,Model层封装了要传递给View层显示的值。
最后更新一下pom.xml文件,添加两个依赖:
&!-- File Upload --&
&dependency&
&groupId&commons-fileupload&/groupId&
&artifactId&commons-fileupload&/artifactId&
&version&1.2.2&/version&
&/dependency&
&dependency&
&groupId&commons-io&/groupId&
&artifactId&commons-io&/artifactId&
&version&2.0.1&/version&
&/dependency&
好像前面写的代码根本没有涉及到这两个jar包啊,为什么要引入?
之前我写道
@RequestParam注解自动将POST提交的参数中名为file的封装到一个MultipartFile类中,一切都在开发人员眼皮底下做好了,大大减少了开发人员的代码量。
底层真正由谁来做的呢?我们加入了multipartResolver这个Bean,它对应的类为
org.springframework.monsMultipartResolver,
看看这个类的源代码,import中赫然写着:
import mons.fileupload.FileI
import mons.fileupload.FileItemF
import mons.fileupload.FileU
import mons.fileupload.FileUploadB
import mons.fileupload.FileUploadE
import mons.fileupload.servlet.ServletFileU
因此SpringMVC封装了commons-fileupload上传组件,真正起上传作用的还是commons-fileupload-1.2.2.jar这个jar包里面的类。
浏览 25127
兄弟,不错,我支持你。可以+qq一起多交流不?谢谢!我很少上QQ,可以私信给我哇。
stephansun
浏览: 194246 次
来自: 上海
但是其中“这个Accept和Request Headers中的 ...
学习到了,感谢分享!
总结的不错。
那你也说一下spring-asm重新打包以后的源码怎么获取,尽 ...
谢谢啊~学习了~~
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'严重: Servlet.service() for servlet jsp threw exception
javax.servlet.ServletException: File &/login.jsp& not found
at org.apache.jasper.servlet.JspServlet.handleMissingResource(JspServlet.java:335)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:229)
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1265)
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1016)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:965)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:859)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:883)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:792)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:83)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
at java.lang.Thread.run(Unknown Source)
9:26:30 org.apache.catalina.core.StandardWrapperValve invoke
删掉就好了&
本文已收录于以下专栏:
相关文章推荐
Invalid bean definition with name 'dataSource' defined in file [E:\apache-tomcat-7.0.65\webapps\bbs\...
在web编程中,有时我们需要将jsp文件后缀改成其他名称的后缀,我们知道这些后缀文件的执行最终必须遵守web服务器的命名方法,就拿我们免费的tomcat为例,
我们想将某个以.jsp为后缀的JSP文...
rg.apache.jasper.JasperException: File &/struts-tags& not found org.piler.DefaultEr...
开发环境:win 8
服务器:tomcat 7
开发工具:myeclipse 10
Struts2版本号:struts-2.5.10.1
JDK版本:JDK 1.6
1.工程建立以及web.xml配置...
在部署项目中遇到了这个问题,错误貌似是这样的
org.apache.jasper.JasperException: /WebRoot/index.jsp(2,40) File &/struts-ta...
完整错误信息:HTTP Status 500 - /online.jsp (line: 495, column: 2) File [/foot.jsp] not foundtype Exception...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)拒绝访问 |
| 百度云加速
请打开cookies.
此网站 () 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(3ad99d5d8420439a-ua98).
重新安装浏览器,或使用别的浏览器今天看啥 热点:
JSTL标签出错:&c:forEach var=&book& items=&${requestScope.books}& varStatus=&status&&,jstlvarstatus今天在运行书里的JSTL标签代码的时候出错,总结一下:
问题1.The JSP specification requires that an attribute name is preceded by whitespace&
解决:&c:forEach var="book" items="${requestScope.books}"varStatus="status"&出错
改为:&c:forEach var="book" items="${requestScope.books}" varStatus="status"&
原因:varStatus="status"前加空格
------------------------------------------------------------------&
问题2.Property 'isbn' not found on type java.lang.String
解决:&c:forEach var="book" items=" ${requestScope.books}" varStatus="status"&出错
改为:&c:forEach var="book" items="${requestScope.books}" varStatus="status"&
原因:${requestScope.books}前去掉空格
------------------------------------------------------------------&
问题3.程序能运行了,jsp能访问,但是EL表达式读取不到想要的信息 &&
解决:没有在.xml配置文件添加servlet的&url-pattern&信息,无法调用servlet向jsp传对象。
在.xml文件中添加:
&servlet-name&BooksServlet&/servlet-name&
&servlet-class&com.controller.BooksServlet&/servlet-class&
&/servlet&
&servlet-mapping&
&servlet-name&BooksServlet&/servlet-name&
&url-pattern&/BooksServlet&/url-pattern&
&/servlet-mapping&
------------------------------------------------------------------&
jstl标签练习代码:
1.BooksServlet.java
1 package com.
2 import java.io.IOE
3 import javax.servlet.RequestD
4 import javax.servlet.ServletE
5 import javax.servlet.annotation.WebS
6 import javax.servlet.http.HttpS
7 import javax.servlet.http.HttpServletR
8 import javax.servlet.http.HttpServletR
9 import java.util.L
10 import java.util.ArrayL
11 import com.model.B
12 //@WebServlet("/BooksServlet")
public class BooksServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List&Book& books = new ArrayList&Book&();
Book book1 = new Book("978-7-302-23059-5","Java语言程序设计",45.00);
Book book2 = new Book("978-7-302-21540-0","Java Web编程技术",39.00);
Book book3 = new Book("978-7-302-24130-0","C #入门经典",99.80);
books.add(book1);
books.add(book2);
books.add(book3);
request.setAttribute("books", books);
RequestDispatcher rd = request.getRequestDispatcher("/books.jsp");
rd.forward(request, response);
2.Book.java(javaBean类)
1 package com.
3 public class Book {
private double
public Book(String isbn, String title, double price) {
this.isbn =
this.title =
this.price =
public String getIsbn() {
public void setIsbn(String isbn) {
this.isbn =
public String getTitle() {
public void setTitle(String title) {
this.title =
public double getPrice() {
public void setPrice(double price) {
this.price =
3.books.jsp
1 package com.
3 public class Book {
private double
public Book(String isbn, String title, double price) {
this.isbn =
this.title =
this.price =
public String getIsbn() {
public void setIsbn(String isbn) {
this.isbn =
public String getTitle() {
public void setTitle(String title) {
this.title =
public double getPrice() {
public void setPrice(double price) {
this.price =
4.配置文件.xm
1 &?xml version="1.0" encoding="UTF-8"?&
2 &web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"&
&display-name&Ex_JSTL_tag&/display-name&
&servlet-name&BooksServlet&/servlet-name&
&servlet-class&com.controller.BooksServlet&/servlet-class&
&/servlet&
&servlet-mapping&
&servlet-name&BooksServlet&/servlet-name&
&url-pattern&/BooksServlet&/url-pattern&
&/servlet-mapping&
&welcome-file-list&
&welcome-file&index.html&/welcome-file&
&welcome-file&index.htm&/welcome-file&
&welcome-file&books.jsp&/welcome-file&
&welcome-file&default.htm&/welcome-file&
&welcome-file&default.jsp&/welcome-file&
&/welcome-file-list&
19 &/web-app&
5.运行时注意加入 &&http://localhost/Ex_JSTL_tag/BooksServlet
只有在url中加入/BooksServlet才能调用到servlet想jsp传参数
原创不易,转载请声明原文地址。
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&
Java编程最近更新您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
学习jsp总结.doc 34页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:200 &&
你可能关注的文档:
··········
··········
学习jsp总结
篇一:JSP学习总结
1、 两个JSP之间的信息交互
一个JSP中提交Form,指向另一个JSP,在第二个JSP中用
String str = request.getParameter(&表单中的控件名&);来获取用户输入或选择项名称
通过用户选择的或输入做为数据库中查找依据来查询数据库,显示相应数据在第二个页面中。
2、 JSP中9个内置组件
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application Servlet正在执行的内容
out 用来传送回应的输出
con(原文来自: 博旭 范文网:学习jsp总结)fig Servlet的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外
<%@ page language=&java&
extends=&package .class&
import=&{package .class | .*}, ...session=&true|false&
buffer=&none|8kb|sizekbautoFlush=&true|falseisThreadSafe=&true|falseinfo=&text&
errorPage=&relativeURL&
contentType=&mimeT charset=characterSet |&text/ charset=ISO-8859-1isErrorPage=&true|false%>
<%@ page import=&java.util.*%> 4、 Request 对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。 API:JSP:Request
&%@ page contentType=&text/charset=gb2312&%& &%request.setCharacterEncoding(&gb2312&);%& &html& &head&
&title&request对象_例1&/title& &/head&
&body bgcolor=&#FFFFF0&& &form action=&method=&post&& &input type=&textname=&qwe&& &input type=&submitvalue=&提交&& &/form&
请求方式:&%=request.getMethod()%&&br& 请求的资源:&%=request.getRequestURI()%&&br& 请求用的协议:&%=request.getProtocol()%&&br& 请求的文件名:&%=request.getServletPath()%&&br& 请求的服务器的IP:&%=request.getServerName()%&&br& 请求服务器的端口:&am
正在加载中,请稍后...
30页64页63页34页38页113页82页87页104页63页

我要回帖

更多关于 jsp 权限管理 的文章

 

随机推荐